我尝试使用名为 X-Cache-Tags 的标头字段中的缓存标签来管理缓存失效。典型响应中的相关标头如下所示:
Age:218
Cache-Control:public, s-maxage=300
Via:1.1 varnish-v4
X-Cache-Tags:product-395378,brand-54,product-374977,product-419381,product-184166,product-419380,category-974
X-Varnish:1737663 852286
X-Varnish-Cache:HIT
此对象被正确缓存,当我请求该页面时,我会获得点击。
我还可以对这些标头发出禁令。在针对标签发出禁令后product-395378
,我的 ban.list 如下所示:
1435166652.596926 117 obj.http.X-Host ~ .* && obj.http.X-Url ~ .* && obj.http.content-type ~ .* && obj.http.X-Cache-Tags ~ (product\-395378)(,.+)?$
因此,看起来禁令设置正确。但是,当我在禁令之后请求同一页面时,缓存并未失效,我得到的是缓存命中,而不是未命中。
可能是什么问题?
答案1
我发现了这个问题。我没有在 vcl_backend_response 中设置X-Host
和标头。X-Url