varnish http-cache 中 bans 和 purge 有什么区别

What is the difference between bans and purge in varnish http-cache

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

谁能解释并区分 varnish http-cache 中的禁止和清除?

有人吗?谢谢!

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

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

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

如果您想要一些实际示例以及如何对其进行编码,也许您应该查看 this answer