假设我有一些高度访问的首页,它按类别显示一些项目的数量。 当添加/删除某个项目时,我需要使这个前页/网址和其他2个项目无效。
如何在Varnish(4.x)的后端使这些网址无效,最佳做法是什么?
从我捕获的内容中,我可以:
但这种自动使用方法是否安全?基本上,每次插入/更新/删除一些相关实体时,我都需要使一些视图无效。 它会导致禁止列表累积并增加CPU消耗吗?
还有其他方法吗?感谢。
答案 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:)