是否可以设置与反向代理通信的cache-control
标头,以便在确定什么是唯一的uri时简单地忽略查询参数,或者简单地说:即使某些查询参数已更改,也要验证缓存?
有时,查询参数与页面呈现无关,至少从服务器端的角度来看。例如,来自Google Adwords的所有utm_*
变量。这些是您页面上的javascript所必需的,因此您不想将它们剥离并重定向到缓存页面,但同时不处理两个基本相同但具有不同{{1}的uri是有利的。与反向代理通信时,参数为唯一。
一个例子:
utm_*
http://www.example.com/search?sort=price
无论如何使用HTTP 1.1规范(即某种类型的http标头)告诉反向代理,它可以将这两个页面视为相同吗?
答案 0 :(得分:1)
您可以在vcl_recv中过滤查询字符串,并且还有一个Varnish模块[1]。
此外,您必须记住,查询字符串参数顺序在这种情况下很重要[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