2

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

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

一个例子:

  1. http://www.example.com/search?sort=price

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

有没有办法告诉反向代理使用 HTTP 1.1 规范(即某种类型的 http 标头)它可以将这两个页面视为相同?

4

1 回答 1

1

您可以在 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]去除选择查询字符串属性/值对,以便清漆不会因它们而改变缓存

于 2013-10-04T10:51:37.963 回答