在做的CDN的機器的http頭中,我們常常見到X-Cache和X-Cache-Lookup的二個參數,那這二個參數分別是什麼意思,有什麼分別啦.
HTTP/1.0 200 OK
Expires: Mon, 23 Jun 2008 09:16:40 GMT
Cache-Control: max-age=60
Content-Type: text/html
Accept-Ranges: bytes
ETag: "985899363"
Last-Modified: Mon, 23 Jun 2008 08:17:40 GMT
Content-Length: 54218
Date: Mon, 23 Jun 2008 09:15:40 GMT
Server: Microsoft-IIS/7.0
Age: 20
X-Cache: HIT from cdcnc-253-238
X-Cache-Lookup: HIT from cdcnc-253-238:80
Via: 1.0 cdcnc-253-238 (squid/3.0.STABLE1-20080201)
Connection: close
見到了嗎?很奇怪吧,HIT表示命中,怎麼會有二個命中.
X-Cache:其實就個就是真實本機的HIT和MISS.
X-Cache-Lookup:這個就是向父,還有sibling模式的查詢,比如ICP。之類命中的數據。
對於另一種情況:
HTTP/1.0 200 OK
Expires: Mon, 23 Jun 2008 09:16:40 GMT
Cache-Control: max-age=60
Content-Type: text/html
Accept-Ranges: bytes
ETag: "985899363"
Last-Modified: Mon, 23 Jun 2008 08:17:40 GMT
Content-Length: 54218
Date: Mon, 23 Jun 2008 09:15:40 GMT
Server: Microsoft-IIS/7.0
Age: 20
X-Cache: MISS from cdcnc-253-238
X-Cache-Lookup: HIT from cdcnc-253-238:80
Via: 1.0 cdcnc-253-238 (squid/3.0.STABLE1-20080201)
Connection: close
harvey兄給的解釋:
1,文件在squid中超過了 refresh_p參數設置的時間,訪問的時候會去後端驗證,這個時候返回的是miss:
(X-Cache: MISS from cdcnc-253-238)
但發現後端文件並沒有更新,所以squid繼續使用cache文件,返回的就是hit:
X-Cache-Lookup: HIT from cdcnc-253-238:80
2,客戶端給了一個ctrl+f5,但refresh_pattern參數中設置了reload-into-ms,這時文件也會到到後端驗證,同樣返回miss,但後端告訴squid文件未更新,所以squid繼續從cache返回給client,返回的就是hit
(X-Cache-Lookup: HIT from cdcnc-253-238:80)
由於我的設置是:
refresh_pattern www.domian.com 10 0% 60 reload-into-ims
過期時間設置的很短,所以上述解釋有可能是對的!
驗證:
1.將參數換為ignore-reload,果然出現了兩個HIT
2.改為refresh_pattern company.zhaopin.com 1440 0% 2880 reload-into-ims
時間加大,果然也出現兩個HIT