caching - Varnish 中的禁止是如何工作的?

标签 caching varnish http-caching varnish-vcl

我无法理解禁止在 Varnish 中是如何工作的。从purge和ban的区别的术语和思路看来

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

请澄清。

此外,禁止算法定义为

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

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

最佳答案

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

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

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

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

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

关于caching - Varnish 中的禁止是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23260232/

相关文章:

ruby-on-rails-3 - 使用 Memcached/Dalli 从缓存中排除图像

google-app-engine - Objectify: "session cache"如何跨实例工作

c++ - LUT 等的 L1/L2 缓存行为是什么?

Varnish 自动将负载均衡器 IP 添加到 X-Forwarded-For header

php - 使用 Varnish HTTP 加速器清除目录下的所有文件

http - 我可以改变自定义 header 吗?

java - 使用 Hibernate 的二级缓存时的默认缓存时间是多少

symfony - Symfony2中用于缓存的内部路由

代码或 IIS 6 中的 c# 缓存控制

apache - 如何理解 "semantically transparent"部分RFC2616的 "Cache-Control machanism"?