【发布时间】:2016-09-06 22:04:52
【问题描述】:
我有一个带有页面的网站
www.mydomain.com/product-listing/
有时我们的供应商之一访问此页面时会在 URL 中设置特定参数:
www.mydomain.com/product-listing/?vendor=VENDORID
所有这些都是在特定于该供应商的页面标题中打印出一些信息。
我想要页面的任何版本,除了那些包含 vendor 参数的版本被缓存并由 varnish 提供 - 其余版本由后端提供。
然而,Varnish 似乎有时会捕捉到这些访问供应商之一并缓存该结果 - 之后将返回带有标题信息的页面。
还有一个 cookie 存在:供应商第一次访问 cookie 时将被设置,这样即使该参数不存在,也可以在返回时显示标题信息。但是:据我了解,如果后端发送 cookie,Varnish 不应该缓存?我们不会在 vcl 中操作 cookie。
我的 VCL:
sub vcl_recv {
// I expect this to catch all urls with the parameter vendor present
if (req.url ~ "vendor")
{
return (pass);
}
if (req.url ~ "^/product-listing"){
return (hash);
}
return(pass);
}
其他子程序中没有。
【问题讨论】:
标签: varnish varnish-vcl