使用 varnishadm 清除单个 URL 的清漆缓存

rfc*_*484 13 cache varnish

一个 Wordpress 网站正在使用 Varnish。

我想为单个 URL 而不是整个域清除 Varnish。

使用此命令,我可以为整个域重新启动 Varnish:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com\" && req.url ~ \"^/\"'
Run Code Online (Sandbox Code Playgroud)

但是,我只想为单个 url 清除清漆。

前任: www.foo.com/url_to_be_purged

我试过用单个 URL 替换上一个命令:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com/url_to_be_purged\" && req.url ~ \"^/\"'
Run Code Online (Sandbox Code Playgroud)

但它没有用,URL 仍然是HITVarnish 中的。

关于如何实现这一目标的任何想法?

更新

根据ghloogh 的建议,我尝试了以下命令:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == http://www.foo.com/url_to_be_purged"
Run Code Online (Sandbox Code Playgroud)

我也试过这种变化:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == /url_to_be_purged"
Run Code Online (Sandbox Code Playgroud)

但我仍然HIT在 URL 中得到一个并且数据没有更新

ghl*_*ogh 20

您不需要为主机名指定方案,您可以使用严格匹配而不是正则表达式:

varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"
Run Code Online (Sandbox Code Playgroud)