我无法理解禁食是如何在Varnish中运作的。从吹扫和禁令之间的区别和思考,似乎
请澄清。
此外,禁止算法被定义为
缓存中的每个对象始终指向禁止列表中的条目。这是他们上次检查的条目。每当Varnish从缓存中检索某些内容时,它会检查禁止列表的对象指针是否指向列表的顶部。如果它没有指向列表的顶部,它将针对禁止列表中的所有新条目测试对象,如果对象与其中任何一个都不匹配,则更新禁止列表的指针。
如果有人得到这个......请解释一下。这将非常有帮助。
答案 0 :(得分:4)
禁止和清除都是使内容无效的方法。
清除要求您可以识别要使其无效的单个URL,并发送此URL的HTTP PURGE请求。
禁止更具可配置性,并允许您设置需要匹配的高速缓存对象的多个AND-ed表达式(任何存储的标头)。禁止在下一个客户端请求上进行评估,或者由定期扫描缓存的内部作业(ban-lurker)进行评估。可以通过HTTP或varnishadm控制台添加禁令。
始终是一次性失效。如果禁止使HTTP对象失效,那么当它稍后弹回缓存时,它将无法与该禁令匹配。
使用“" ban"这个词有点混乱?因为在查找缓存时禁止任何匹配对象成为候选对象,所以会使用它。 Varnish可能在缓存中有多个版本的哈希密钥(==主机名+ URI),需要决定在每个请求中使用哪个版本。
答案 1 :(得分:2)
在清除大量缓存对象时出于性能原因禁止使用。每次更新禁令列表后,varnish接收到请求将根据禁止列表进行检查(如果它存在于缓存中)。如果它与banlist上的项目匹配,它将被删除,并将获取一个新项目。此请求(无论是直接匹配还是从后端获取)将不再需要对禁止列表进行另一次查找,直到再次更新禁令列表。
这样就可以清除大量物体而无需一次性完成。