varnish使后端的URL REGEX无效

时间:2014-08-22 22:17:52

标签: regex varnish purge

假设我有一些高度访问的首页,它按类别显示一些项目的数量。 当添加/删除某个项目时,我需要使这个前页/网址和其他2个项目无效。

如何在Varnish(4.x)的后端使这些网址无效,最佳做法是什么?

从我捕获的内容中,我可以:

    VCL配置文件中的
  1. implement my HTTP PURGE handler,“禁止”匹配收到的正则表达式的网址
  2. 从后端到Varnish,为这3个网址发送3x HTTP PURGE请求。
  3. 但这种自动使用方法是否安全?基本上,每次插入/更新/删除一些相关实体时,我都需要使一些视图无效。 它会导致禁止列表累积并增加CPU消耗吗?

    还有其他方法吗?感谢。

1 个答案:

答案 0 :(得分:1)

根据这篇精彩文章http://www.smashingmagazine.com/2014/04/23/cache-invalidation-strategies-with-varnish-cache/,解决方案是标签。

X-depends-on: 3483 4376 32095 28372  #http-header created by backend
ban obj.http.x-depends-on ~ “\D4376\D” #ban rule emitted to discard dependant objects

我错过的是,有后台进程“ban-lurker”,它迭代缓存的对象,这些对象存在适用但尚未尝试禁止规则,如果测试了所有适用的对象,则禁止禁用规则。禁止规则只需要编写,例如它只使用与缓存对象一起存储的数据,而不是使用例如req.url,因为req对象没有与对象一起存储在缓存中,所以lurker-process没有它。

所以现在ban-way +标签看起来对我来说非常可靠。 谢谢Per Buer:)