Varnish如何禁止使用?

时间:2014-04-24 05:02:13

标签: caching varnish http-caching varnish-vcl

我无法理解禁食是如何在Varnish中运作的。从吹扫和禁令之间的区别和思考,似乎

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

请澄清。

此外,禁止算法被定义为

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

始终是一次性失效。如果禁止使HTTP对象失效,那么当它稍后弹回缓存时,它将无法与该禁令匹配。

使用“" ban"这个词有点混乱?因为在查找缓存时禁止任何匹配对象成为候选对象,所以会使用它。 Varnish可能在缓存中有多个版本的哈希密钥(==主机名+ URI),需要决定在每个请求中使用哪个版本。

答案 1 :(得分:2)

在清除大量缓存对象时出于性能原因禁止使用。每次更新禁令列表后,varnish接收到请求将根据禁止列表进行检查(如果它存在于缓存中)。如果它与banlist上的项目匹配,它将被删除,并将获取一个新项目。此请求(无论是直接匹配还是从后端获取)将不再需要对禁止列表进行另一次查找,直到再次更新禁令列表。

这样就可以清除大量物体而无需一次性完成。