Caching 如何在varnish中缓存未过期时覆盖过时缓存

Caching 如何在varnish中缓存未过期时覆盖过时缓存,caching,varnish,varnish-vcl,Caching,Varnish,Varnish Vcl,在阅读varnish 4.1文档后,我发现我可以将“req.hash\u always\u miss”设置为true,以便在查找缓存时强制执行“miss”,并在后端获取最新内容 但是我仍然不知道如何配置vcl文件 下面是我的服务器中的配置文件 backend default { .host = "127.0.0.1"; .port = "8080"; } acl purgers { "localhost"; } sub vcl_recv { if (req.

在阅读varnish 4.1文档后,我发现我可以将“req.hash\u always\u miss”设置为true,以便在查找缓存时强制执行“miss”,并在后端获取最新内容

但是我仍然不知道如何配置vcl文件

下面是我的服务器中的配置文件

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

acl purgers {
    "localhost";
}

sub vcl_recv {

    if (req.method == "PURGE") {
        if (!client.ip ~ purgers) {
                return(synth(405,"Not allowed."));
        }
       set req.hash_always_miss = true;        

    }
}

sub vcl_backend_response {

    unset beresp.http.set-cookie;
    set beresp.ttl = 1d;

}
当后端内容更改时,我希望在varnish缓存过期之前刷新它。 所以我称之为curl-X清除
我确实得到了最新的内容作为回应,但我发现varnish缓存仍然没有得到刷新。有人能告诉我为什么吗?谢谢

也许这会有所帮助:“hash_always_miss将替换当前变量,而不是其他变量。相同hash的“旧”其他变量仍然是有效对象,并将提供给客户端,指示与不同的头匹配的请求头。”谢谢Ronald,你的意思是我不能在“旧”缓存未过期时刷新它?不,这不是我的意思。尝试在VCL中使用“return(purge);”而不是“set req.hash_always_miss=true;”purge“removes all”Vary:“-缓存对象的变体,我不确定Varnish 4中的“hash_always_miss”是否也这样做。但是如果它与“purge”一起工作,那么您知道这就是使用“hash\u always\u miss”时遇到的问题。如果您不知道我所说的关于“Vary”的内容,请阅读以下内容:这篇文章真的很有帮助,再次感谢!