如何添加 GET 参数导致 Varnish 提供未缓存的页面

如何添加 GET 参数导致 Varnish 提供未缓存的页面

我想向某个 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。

相关内容