綜述:
Cache-Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。在請(qǐng)求消息或響應(yīng)消息中設(shè)置Cache-Control并不會(huì)修改另一個(gè)消息處理過(guò)程中的緩存處理過(guò)程。請(qǐng)求時(shí)的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,響應(yīng)消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。網(wǎng)頁(yè)的緩存通過(guò)HTTP消息頭中的“Cache-control”來(lái)控制,常見(jiàn)的取值有private、no-cache、max-age、must-revalidate等,默認(rèn)為private。
其作用根據(jù)不同的重新瀏覽方式分為以下幾種情況:
(1) 打開(kāi)新窗口如果指定cache-control的值為private、no-cache、must-revalidate,那么打開(kāi)新窗口訪問(wèn)時(shí)都會(huì)重新訪問(wèn)服務(wù)器。而如果指定了max-age值,那么在此值內(nèi)的時(shí)間里就不會(huì)重新訪問(wèn)服務(wù)器,例如: Cache-control: max-age=5 表示當(dāng)訪問(wèn)此網(wǎng)頁(yè)后的5秒內(nèi)再次訪問(wèn)不會(huì)去服務(wù)器。
(2) 在地址欄回車如果值為private或must-revalidate(和網(wǎng)上說(shuō)的不一樣),則只有第一次訪問(wèn)時(shí)會(huì)訪問(wèn)服務(wù)器,以后就不再訪問(wèn)。如果值為no-cache,那么每次都會(huì)訪問(wèn)。如果值為max-age,則在過(guò)期之前不會(huì)重復(fù)訪問(wèn)。
(3) 按后退按扭如果值為private、must-revalidate、max-age,則不會(huì)重訪問(wèn),而如果為no-cache,則每次都重復(fù)訪問(wèn)。
(4) 按刷新按扭無(wú)論為何值,都會(huì)重復(fù)訪問(wèn) 當(dāng)指定Cache-control值為“no-cache”時(shí),訪問(wèn)此頁(yè)面不會(huì)在Internet臨時(shí)文章夾留下頁(yè)面?zhèn)浞荨A硗?,通過(guò)指定“Expires”值也會(huì)影響到緩存。例如,指定Expires值為一個(gè)早已過(guò)去的時(shí)間,那么訪問(wèn)此網(wǎng)時(shí)若重復(fù)在地址欄按回車,那么每次都會(huì)重復(fù)訪問(wèn): Expires: Fri, 31 Dec 1999 16:00:00 GMT 在ASP中,可以通過(guò)Response對(duì)象的Expires、ExpiresAbsolute屬性控制Expires值;通過(guò)Response對(duì)象的CacheControl屬性控制Cache-control的值,例如: Response.ExpiresAbsolute = #2000-1-1# ' 指定絕對(duì)的過(guò)期時(shí)間,這個(gè)時(shí)間用的是服務(wù)器當(dāng)?shù)貢r(shí)間,會(huì)被自動(dòng)轉(zhuǎn)換為GMT時(shí)間 Response.Expires = 20 ' 指定相對(duì)的過(guò)期時(shí)間,以分鐘為單位,表示從當(dāng)前時(shí)間起過(guò)多少分鐘過(guò)期。 Response.CacheControl = "no-cache" Expires值是可以通過(guò)在Internet臨時(shí)文件夾中查看臨時(shí)文件的屬性看到的。
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","private");
聯(lián)系客服