2012-10-02 49 views
46

由於Varnish版本3有一些用於不同操作的對象。光油漆變色意味着什麼?

例如,必須從後端檢索數據時使用pass。並且它在緩存中發現請求內容時使用命中。

但我無法理解hit-for-pass的用法。當清漆使用它?我沒有在網上找到任何有用的材料,這讓我很清楚。

回答

153

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 * 10sec)在隊列中處於空閒狀態,並且對於這些客戶端中的每一個,都必須完成相同的緩慢的一次性後端請求才能爲其服務。這將破壞您的網站響應時間。

因此,Varnish通過創建hit_for_pass對象來保存此請求無法緩存的決定。

在對同一個URL的下一個請求中,緩存查找將返回一個hit_for_pass對象。這表示可以同時完成多次提取。您的後端可能不會太高興,但至少Varnish不會無故排隊客戶。

+0

明白了。謝謝@ikarsten –

+1

非常明確的解釋。謝謝。 – Vaheh

+0

太棒了。非常感謝! – tven