我对 varnish 没有任何经验。我想设置 varnish 来做一些非常基本的事情:我有两个页面
http://mysite.com/
http://mysite.com/additem
我想缓存http://mysite.com/additem
10 分钟和http://mysite.com/
1 分钟,但每当http://mysite.com/additem
访问时,我都想清除缓存http://mysite.com/
。有什么帮助吗?
答案1
我记得有一个 CLI 程序(purge),你可以从http://mysite.com/additem或者使用 curl 发送清除指令(作为 HTTP 动词)例如
curl -X PURGE http://mysite.com/
但这假设你已经有脚本了http://mysite.com/additem
我认为可以在 VCL 处理程序中调用清除http://mysite.com/additem
sub vcl_recv {
if (req.url ~ "^http://mysite.com/additem") {
purge("req.url == http://mysite.com/");
}
}
(未经测试)
答案2
第1部分:
此命令将清理(清除)子文件夹(例如)
varnishadm -S /etc/varnish/secret -T localhost:6082 "ban req.http.host == mysite.com && req.url ~ ^/fold/.*$"
对于您的域根目录,这将起作用*
varnishadm -S /etc/varnish/secret -T localhost:6082 "ban req.http.host == mysite.com && req.url ~ ^/.*$"
*注意:需要测试上述操作是否清除子文件夹(递归)
第 2 部分:您负责服务器和不是是否允许任何其他用户使用它?系统命令在 PHP 中?如果是的,无论何时运行该命令都应该很容易http://mysite.com/additem被访问。
上述命令在 CLI 中有效,尚未通过其他方式测试。