我想向某个 URL 添加一个参数,以便我能够取消缓存页面。因此,https://example.org/foo/baa?uncached应该由应用服务器提供服务器https://example.org/foo/baa可能直接由 varnish 的缓存提供服务。
为此我尝试添加
if (req.url ~ "^/\?uncached") {
set req.http.X-VC-Cacheable = "NO:On user request";
return(pass);
}
到我的 vcl_recv。但不知何故这不起作用(缓存行为未切换)。这是正确的方法吗?我做错了什么?
答案1
我认为应该是:
if (req.url ~ "\?uncached") {
set req.http.X-VC-Cacheable = "NO:On user request";
return(pass);
}
答案2
就我而言,问题是由于 RegEx 错误:
if (req.url ~ "^/\?uncached") {
仅适用于不含任何本地部分的 URL。而:
if (req.url ~ "\?uncached") {
set req.http.X-VC-Cacheable = "NO:On user request";
return(pass);
}
适用于每个以 uncached 为第一个参数的 URL。