0

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

如何在 Varnish(4.x)中使后端的这些 url 无效的最佳实践是什么?

根据我捕获的内容,我可以:

  1. 在 VCL 配置文件中实现我的 HTTP PURGE 处理程序,即“禁止”匹配接收到的正则表达式的 url
  2. 从后端到 Varnish,为这 3 个 url 发送 3x HTTP PURGE 请求。

但是这种方法对于这种自动使用是否安全?基本上,每次插入/更新/删除某些相关实体时,我都需要使某些视图无效。会不会导致封禁列表累积,增加CPU消耗?

还有其他方法吗?谢谢。

4

1 回答 1

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 :)

于 2014-08-22T23:34:34.083 回答