reverse-proxy - 缓存控制 : Is it possible to ignore query parameters when validating the cache?

标签 reverse-proxy varnish http-caching

是否可以设置 cache-control header 与反向代理通信以在确定什么是唯一 uri 时忽略查询参数,或者简而言之:即使某些查询参数已更改,也要验证缓存?

有时查询参数至少从服务器端的角度来看与页面的呈现无关。例如所有 utm_*来自 Google Adwords 的变量。这些是您页面上的 javascript 所必需的,因此您不想将它们剥离并重定向到缓存页面,但同时最好不要处理两个基本相同但具有不同的 uri utm_*与反向代理通信时参数是唯一的。

一个例子:

  • http://www.example.com/search?sort=price
  • http://www.example.com/search?sort=price&utm_campaign=shoes

  • 无论如何使用 HTTP 1.1 规范(即某种类型的 http header )告诉反向代理它可以将这两个页面视为相同?

    最佳答案

    您可以在 vcl_recv 中过滤查询字符串,并且该 [1] 还有一个 Varnish 模块。

    此外,您必须记住,在这种情况下查询字符串参数顺序很重要 [2]

    另请参阅此相关问题 [3]

    [1] https://www.varnish-cache.org/vmod/querystring

    [2] http://cyberroadie.wordpress.com/2012/01/05/varnish-reordering-query-string/

    [3] Stripping out select querystring attribute/value pairs so varnish will not vary cache by them

    关于reverse-proxy - 缓存控制 : Is it possible to ignore query parameters when validating the cache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19126016/

    相关文章:

    Nginx - 如何使用不同的子域名运行多个 Odoo 实例

    c# - 尽管在响应对象上配置了缓存控制 header ,但未在响应中发送

    ubuntu - Nginx 作为虚拟主机和反向代理

    Nginx代理-proxy_set_header-来自site.conf的自定义 header (用于Varnish缓存)

    Magento + Turpentine + SSL 仅生成 HTTP URL

    varnish - 有没有办法在 Varnish 中为特定请求设置 req.connection_timeout?

    caching - TCP级冗余消除

    ruby-on-rails - Heroku & Rails - Varnish 只是偶尔缓存

    reverse-proxy - 以编程方式访问托管在 WebSEAL 反向代理后面的资源

    http - 为什么 httputil.NewSingleHostReverseProxy 在某些 www 站点上会导致错误?