1.概念
Cache-control用于控制HTTP緩存(在HTTP/1.0中可能部分沒(méi)實(shí)現,僅僅實(shí)現了Pragma: no-cache)
數據包中的格式:
Cache-Control: cache-directive
cache-directive可以為以下:
request時(shí)用到:
| "no-cache"| "no-store"| "max-age" "=" delta-seconds| "max-stale" [ "=" delta-seconds ]| "min-fresh" "=" delta-seconds| "no-transform"| "only-if-cached"| "cache-extension"
response時(shí)用到:
| "public"| "private" [ "=" <"> field-name <"> ]| "no-cache" [ "=" <"> field-name <"> ]| "no-store"| "no-transform"| "must-revalidate"| "proxy-revalidate"| "max-age" "=" delta-seconds| "s-maxage" "=" delta-seconds| "cache-extension"
部分說(shuō)明:根據是否可緩存分為Public 指示響應可被任何緩存區緩存。Private 指示對于單個(gè)用戶(hù)的整個(gè)或部分響應消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當用戶(hù)的部分響應消息,此響應消息對于其他用戶(hù)的請求無(wú)效。no-cache 指示請求或響應消息不能緩存(HTTP/1.0用Pragma的no-cache替換)根據什么能被緩存no-store 用于防止重要的信息被無(wú)意的發(fā)布。在請求消息中發(fā)送將使得請求和響應消息都不使用緩存。根據緩存超時(shí)max-age 指示客戶(hù)機可以接收生存期不大于指定時(shí)間(以秒為單位)的響應。min-fresh 指示客戶(hù)機可以接收響應時(shí)間小于當前時(shí)間加上指定時(shí)間的響應。max-stale 指示客戶(hù)機可以接收超出超時(shí)期間的響應消息。如果指定max-stale消息的值,那么客戶(hù)機可以接收超出超時(shí)期指定值之內的響應消息。Expires 表示存在時(shí)間,允許客戶(hù)端在這個(gè)時(shí)間之前不去檢查(發(fā)請求),等同max-age的效果。但是如果同時(shí)存在,則被Cache-Control的max-age覆蓋。格式:Expires = "Expires" ":" HTTP-date例如Expires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)2.應用通過(guò)HTTP的META設置expires和cache-control<meta http-equiv="Cache-Control" content="max-age=7200" /><meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />上述設置僅為舉例,實(shí)際使用其一即可。這樣寫(xiě)的話(huà)僅對該網(wǎng)頁(yè)有效,對網(wǎng)頁(yè)中的圖片或其他請求無(wú)效,并不會(huì )做任何cache。這樣客戶(hù)端的請求就多了,盡管只是檢查L(cháng)ast-modified狀態(tài)的東西,但是請求一多對瀏覽速度必定有影響。
如果要對文件添加cache可以通過(guò)apache的mod_expire模塊,寫(xiě)法為<IfModule mod_expires.c>ExpiresActive OnExpiresDefault "access plus 1 days"
</IfModule>記得ExpiresActive設為On,我起先沒(méi)設置On,似乎怎樣YSlow都查不到緩存機制。這樣添加的話(huà)就是默認所有的。
如果要針對個(gè)別MIME類(lèi)型則可以:ExpiresByType image/gif "access plus 5 hours 3 minutes"見(jiàn) Apache Module mod_expires另外,當點(diǎn)擊瀏覽器上的刷新,客戶(hù)端發(fā)送的請求中均是max-age=0,表示validate操作,發(fā)送請求到服務(wù)器要求檢查cache,再更新cache,一般得到的是304 Not Modified,表示沒(méi)變動(dòng)。
聯(lián)系客服