2015-06-10 68 views
1

我只是爲我的團隊設置光油。我想知道:如果我的應用程序當前沒有發送任何cache-control頭文件,那麼清漆緩存的行爲是什麼。無論如何,它是否緩存?或者我們需要明確發送cache-control標頭的值,以便清漆可以緩存該值。我已經設置了清漆來緩存200,404,400狀態碼響應。謝謝。沒有緩存控制標題的光油行爲

回答

1

這取決於許多因素:varnish將緩存在客戶端發送Coookie頭的任何請求,或者如果服務器發送與Set-Cookie頭的響應。你也不能緩存POST請求,因爲它們不是冪等的。

這就是說,如果一個請求不附上餅乾,是GET要求,清漆被設定爲高速緩存默認120秒的請求。這取決於清漆中的default_ttl設置,並且僅適用於可在清漆中緩存的請求(即使不設置cache-control標頭)。

從光油文檔:

的Cache-Control頭可以包含多個報頭。清漆評估它並尋找s-maxage和max-age。如果找到,它會將TTL設置爲s-maxage的值。如果沒有找到s-maxage,它將使用max-age。如果兩者都不存在,它將使用Expires頭來設置ttl。 如果沒有這些報頭的存在,它會使用默認的TTL

https://www.varnish-software.com/static/book/VCL_Basics.html

+0

你指的是默認的行爲?通過配置VCL,您可以覆蓋發送/接收的所有/所有報頭。 –

+0

這個問題具體是關於應用程序不發送'cache-control'頭時的行爲 - 確實可以覆蓋發送/接收的任何頭,但是發送或接收到* no *頭的開箱即用某些可緩存的請求的默認TTL。 –

+0

@JeffSisson你是說如果沒有從後端應用程序(而不是從客戶端)緩存控制'頭清漆會緩存? – Trying