清漆http-cache中的禁止和清除有什么区别

时间:2017-01-05 08:53:49

标签: varnish varnish-vcl

嗨,我是Varnish HTTP-Cache的新手。我发现很难理解清除和禁止缓存失效之间的概念差异。

任何可以解释和区分清漆http-cache中的禁止和清除的人吗?

任何?谢谢!

1 个答案:

答案 0 :(得分:11)

基本上,Purge和Ban之间的区别在于硬删除和软删除,但它们都会更新缓存。然而,还有一些细节可以区分它们:

清除:立即从缓存中删除对象。它仅适用于所请求的特定URL,并且无法使用带有Purge的正则表达式。例如:调用 www.example.com/uri 的清除,只会从缓存中删除此URL的对象。

禁止:当您想要一次删除多个对象时使用它。这可以使用 Purge 中不可用的正则表达式来完成。当使用 Ban 时,在Varnish内部创建一个规则以使对象无效,将根据此规则检查每个请求Varnish的对象,如果匹配则更新。此规则将仅检查早于它的对象,并且只要存在比它更旧的对象,它将保留在Varnish中。此过程避免了同一对象的失效 一旦。一个实际的例子是你想禁止所有 .png 对象。使用 Varnish Cli ,您可以发出命令ban req.url ~ "\\.png$"。每次从缓存请求匹配此条件的对象时,它将被丢弃,将生成新版本并将其传送到客户端。不会检查规则后生成的对象。

如果你想要一些实际的例子以及如何编码,也许你应该检查this answer