【问题标题】:Caching with Varnish & Varying over custom-set HTTP headers通过自定义设置的 HTTP 标头使用 Varnish 和 Varying 进行缓存
【发布时间】:2012-01-08 16:18:07
【问题描述】:

我正在开发您的标准高流量电子商务网站,并希望使用 Varnish 设置缓存。此设置的特殊之处在于应用程序将根据用户的特定位置返回不同的内容。

所以我的计划是这样的:

  • 使用 GeoIP 模块设置 Nginx,这样我就可以在发送到应用后端的所有请求上获得 X-Country: XX 标头。
  • 将 Rails 应用程序配置为始终返回“Vary: X-Country”响应标头。
  • 将 Varnish 服务器放在 Nginx 和应用程序后端之后,这样它就可以缓存 Rails 服务的对象的多个版本,并根据 Nginx 设置的请求标头来服务它们(不是客户端浏览器)

有没有人有这样的设置经验?有什么需要注意的吗?

【问题讨论】:

标签: http caching varnish vary


【解决方案1】:

如果 GeoIP 查找速度很慢,并且/或者您想让人们覆盖国家/地区设置,您可以使用 country cookie 并让前端 Varnish 检查它。

  • 如果没有国家/地区 cookie,请将请求转发到您的 nginx 后端以进行 GeoIP 查找。 Nginx 提供带有 Set-Cookie: country=us 标头的重定向。如果您想避免重定向并支持拒绝 cookie 的客户端/机器人,ngingx 可以将其转发到 Rails 并仍然尝试在响应中设置国家/地区 cookie。或者 Varnish 可以捕获重定向响应并使用新设置的 cookie 进行“重启”并转到后端
  • 如果您已经有国家/地区 cookie,请在您的 Varnish 哈希中使用它

如果 Rails 可以进行 GeoIP 解析,则不需要 Ngingx,除非您使用它来提供文件...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 2011-01-28
    • 2011-07-24
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2012-08-26
    相关资源
    最近更新 更多