是否可以设置 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/