2015-09-02 32 views
0

清漆(快速運行)緩存對象比我(想我)指定的時間更長。要調試這個問題,我在下面的時尚無處不在加入標題:通過頭文件調試清漆

sub vcl_miss { 
    set req.http.Debugmiss = "vcl_miss"; 
#FASTLY miss 
    return(fetch); 
} 
sub vcl_deliver { 
#FASTLY deliver 
    set resp.http.Debugmiss = req.http.Debugmiss; 
    return(deliver); 
} 

我做這個的vcl_recvvcl_hitvcl_missvcl_passvcl_hashvcl_fetch;但是,似乎根據標頭調用的唯一函數是vcl_recv(它執行查找)和vcl_deliver。例如,根據vcl_recv返回lookup代碼之後的狀態圖(https://www.varnish-software.com/book/3/_images/vcl.png),應該調用vcr_hash函數。如果是這樣,它似乎沒有設置任何標題。

有什麼我可以忽略?

這些都是捲曲返回響應頭:

< HTTP/1.1 200 OK 
< Server: Cowboy 
< X-Frame-Options: SAMEORIGIN 
< X-Xss-Protection: 1; mode=block 
< X-Content-Type-Options: nosniff 
< Access-Control-Allow-Origin: * 
< Content-Type: application/json; charset=utf-8 
< Etag: W/"9fbfd39142780bd83fed663b051c83d9" 
< X-Request-Id: a2a9b83a-4143-4b40-b788-94969dd5ce91 
< X-Runtime: 0.020195 
< X-Rack-Cache: miss 
< Via: 1.1 vegur 
< Content-Length: 434 
< Accept-Ranges: bytes 
< Date: Wed, 02 Sep 2015 13:41:41 GMT 
< Via: 1.1 varnish 
< Age: 4 
< Connection: keep-alive 
< X-Served-By: cache-lhr6332-LHR 
< X-Cache: HIT 
< X-Cache-Hits: 1 
< X-Timer: S1441201301.048931,VS0,VE2 
< Cache-Control: no-cache, no-store, private, must-revalidate, max-age=0, max-stale=0, post-check=0, pre-check=0 
< Expires: 0 
< Pragma: no-cache 
< Debugrecv: vcl_recv 
< Debugrecvreturn: lookup 
< debugme: vcl_deliver; desperate8 

整個VCL可以在這裏找到:https://gist.github.com/mdemare/2e0fa52e62691806e0a0

+0

您可以添加完整的VCL? – Redithion

+0

當然,我已經添加了vcl。 –

回答

1

我認爲這個問題是在你REQ設置頭的VCL功能這是請求對象,而不是響應。所以當你看看響應標題,設置爲req對象的將不會顯示出來。

你可以嘗試要麼看着請求頭,也可以使用varnishlog(more info

+0

在大多數vcl函數中,我沒有對響應對象的寫入權限。在'vcl_deliver'中,第317-323行,我將請求頭部複製到響應頭部。至少,該策略似乎適用於'vcl_recv'函數。 –

+1

我強烈建議在這種情況下使用varnishlog。也許這樣,你甚至可以找到爲什麼標題不顯示。 – Redithion