Varnish4 强制所有缓存过期

如果你正在使用Varnish 4, 使用Ban命令/参数可以使缓存强制过期

varnishadm命令行中使用ban命令

ban req.url ~ /foo
ban req.http.host ~ example.com && obj.http.content-type ~ text
ban.list

 

VCL文件中使用BAN参数

ban("req.url ~ /foo");

 

在VCL文件中增加BAN方法

sub vcl_recv {
    if (req.method == "BAN") {
        ban("req.http.host == " + req.http.host +
            " && req.url == " + req.url);
        # Throw a synthetic page so the request won't go to the backend.
        return(synth(200, "Ban added"));
    }
}

 

请注意:

Ban只能清除已经在缓存中的对象,例如ban并不能阻止新的对象加入缓存或者正在被处理. 已缓存的对象满足ban将被标记为过时的(obsolete). 过时的对象会被自动回收和其他 obj.ttl==0 的对象一样.

 

更多内容请参考官方文档: http://book.varnish-software.com/4.0/chapters/Cache_Invalidation.html#banning