清漆一击换传是啥意思?
Posted
技术标签:
【中文标题】清漆一击换传是啥意思?【英文标题】:Varnish hit-for-pass means?清漆一击换传是什么意思? 【发布时间】:2012-09-23 09:03:22 【问题描述】:由于 Varnish 版本 3 具有一些用于不同操作的对象。
例如,当它必须从后端检索数据时使用 pass。当它在缓存中找到请求内容时使用命中。
但我无法理解“hit-for-pass”的用法。清漆什么时候用?我没有在网上找到任何有用的材料让我清楚。
【问题讨论】:
【参考方案1】:一个 hit_for_pass 对象用于针对后端服务器优化获取过程。
对于普通的缓存未命中,Varnish 会将请求相同缓存对象的所有客户端排队,并向后端发送单个请求。这通常是最快的,让后端处理单个请求,而不是同时处理 n 个请求。
请记住,有些后端会花费大量时间来准备对象; 10 秒并不少见。如果这是首页 html,并且您对它有 3000 个请求/秒,那么只发送一个后端请求就很有意义。
当 Varnish 获取对象后发现它无法缓存时,就会出现问题。造成这种情况的原因可能是后端发送“Cache-Control: max-age=0”,或者(更常见的)一个 Set-Cookie 标头。在这种情况下,您有 3,000 到 30,000 个客户端 (3k req/s * 10sec) 在队列中处于空闲状态,并且对于这些客户端中的每一个,必须完成相同的缓慢的一次一个后端请求才能为它们提供服务。这会破坏您的网站响应时间。
所以 Varnish 通过创建一个 hit_for_pass 对象来保存这个请求不能被缓存的决定。
在对同一 URL 的下一次请求中,缓存查找将返回一个 hit_for_pass 对象。这表明可以同时进行多个提取。您的后端可能对此不太满意,但至少 Varnish 不会无缘无故地让客户端排队。
【讨论】:
您能否详细解释一下“这表明可能同时进行多个提取。”?特别是这个信号部分?谢谢 @JohnRoca Signaling 可能是错误的词。找到一击即通过让连接跳过对象等待列表行为。想想“允许多次提取”,如果这样更清楚的话。以上是关于清漆一击换传是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章