在 Varnish 中禁止是如何工作的?

Cha*_*aur 3 caching varnish http-caching varnish-vcl

我无法理解禁止在 Varnish 中是如何工作的。从清除和禁止之间的区别的术语和思想来看,似乎

  • 清除使缓存无效,下一个请求进入后端并再次缓存。
  • BAN ,禁止一个网址。因为它使缓存无效,而不仅仅是下一个,而是所有即将到来的请求都开始进入后端。

请说清楚。

此外,禁止算法被定义为

缓存中的每个对象始终指向禁止列表中的一个条目。这是他们最后一次检查的条目。每当 Varnish 从缓存中检索某些内容时,它都会检查指向禁止列表的对象指针是否指向列表的顶部。如果它没有指向列表的顶部,它将针对禁止列表上的所有新条目测试该对象,如果该对象不匹配其中任何一个,则更新禁止列表的指针。

如果有人得到这个..请解释。这将非常有帮助。

小智 5

禁止和清除都是使内容无效的方法。

清除要求您可以识别要使之无效的单个 URL,并为此 URL 发送 HTTP PURGE 请求。

禁止是更可配置的方式,并允许您设置需要匹配的多个 AND ed 表达式(任何存储的标头)以使缓存对象无效。禁止在下一个客户端请求时进行评估,或者由定期扫描缓存的内部作业 (ban-lurker) 进行评估。可以通过 HTTP 或通过 varnishadm 控制台添加禁令。

它始终是一次性失效。如果某个 HTTP 对象因禁令而无效,那么当它稍后弹出回缓存时,它将不会与该禁令相匹配。

使用“ban”这个词有点令人困惑,因为在缓存中查找时,任何匹配的对象都被禁止成为传递的候选对象。Varnish 在缓存中可能有多个版本的哈希键(== 主机名 + URI),并且需要决定为每个请求提供服务。