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

Visual Studio中的Console Application不显示Debug窗口

打开*.sln之后,在项目的属性页,“配置属性”/“链接器”/“系统”中“子系统”选择“Windows(/SUBSYSTEM:WINDOWS)原先为“控制台(/SUBSYSTEM:CONSOLE)”

如果只修改这一项,重新编译的时候会报这样的错误:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

需要在“高级”选项中添加“入口点”:mainCRTStartup
再次编译就OK了。