Varnish hit-for-pass意味着什么?

Mun*_*sir 47 varnish varnish-vcl

Varnish Version 3有一些用于不同操作的对象.

例如,当必须从后端检索数据时使用pass.并且当它在缓存中发现请求内容时使用命中.

但我无法理解命中传球的用法.当清漆使用它?我没有在网上找到任何有用的材料让我清楚.

小智 161

使用hit_for_pass对象来优化针对后端服务器的获取过程.

对于普通的高速缓存未命中,Varnish将对请求相同高速缓存对象的所有客户端进行排队,并向后端发送单个请求.这通常是最快的,让后端在单个请求上工作,而不是同时使用n个请求淹没它.

请记住,有些后端会花很多时间准备一个物体; 10秒并不罕见.如果这是首页HTML并且你有3000 req/s反对它,发送一个后端请求很有意义.

当Varnish获取了它看到无法缓存的对象后,问题就出现了.造成这种情况的原因可能是后端发送"Cache-Control:max-age = 0",或者(更常见的)是Set-Cookie标头.在这种情况下,您有大约3,000到30,000个客户端(3k req/s*10秒)在队列中闲置,并且对于每个客户端,必须完成相同的慢速一次性后端请求才能为它们提供服务.这将破坏您的网站响应时间.

因此,Varnish通过创建hit_for_pass对象来保存无法缓存此请求的决定.

在对同一URL的下一个请求中,缓存查找将返回hit_for_pass对象.这表示可以同时完成多次提取.你的后端可能不会对此感到高兴,但至少Varnish并没有无缘无故地排队.