我在清除 Varnish 方面遇到问题:
我们的应用程序非常动态。 因此,对象 A 上的事件将生成 10.000 个清除,因为对象 A 信息存在于所有页面中。
对象 A 是统计卖家,页面是广告页面。
我们通过使用curl从php代码对varnish进行异步http PURGE调用来管理此问题。
因此我们将有 10000 个 http 调用 无法计算 url(因此 REgex 不是选项)
我想问一下大家,varnish有没有可能做一些Batch Purging(HTTP接口(interface))?
如果没有,当模型和事件对您的页面影响很大时,您在非常动态的应用程序中测试和工作的选项是什么。
提前致谢 纳比尔
最佳答案
通过 varnishadm
运行清除将是您最好的选择。您可以通过 SSH 传输命令(假设您正在处理远程 Varnish 服务器),也可以允许从 Web 服务器远程访问 Varnish 服务器。
您可以轻松编写自己的 shell 脚本来使用 varnishadm
运行批量清除,或者您可以查看 Thinner ,这是一个基于 Ruby 的清除程序,旨在完全满足您的需求。
您很可能已经考虑过的明显替代方案是重写您的应用程序,以在 URL 或自定义 header 中包含对象 A(例如 X-Object : A
),因此您可以根据该 header 进行禁止:
sub vcl_recv {
if (req.request == "BAN") {
ban("obj.http.x-object == " + req.http.x-object);
}
}
关于varnish - 多个 url 清除 Varnish 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439541/