nocache.jsp:
(背景配置)
<%
response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
頁面header中:
(前台配置)
<meta http-equiv="Expires" content="-10">
<meta http-equiv="Pragma" content="No-cache">
<meta http-equiv="Cache-Control", "private">
保險起見,前背景的禁止緩存的配置都把它寫上。。。。。
==================華麗的分割線=============================================
HTTP消息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。
普通報頭中的Cache-Control用于指定緩存指令,緩存指令是單向的(響應中出現的緩存指令在請求中未必會出現),且是獨立的(一個消息的緩存指令不會影響另一個消息處理的緩存機制),HTTP1.0使用的類似的報頭域為Pragma。
請求時的緩存指令包括:no-cache(用于訓示請示或響應消息不能緩存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
響應時的緩存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。
例:為了訓示IE浏覽器(用戶端)不要緩存頁面,伺服器端的jsp程式可以編寫如下:
response.setHeader(“Cache-Control”, “no-cache”);
//response.setHeader(“Pragma”, “no-cache”);作用相當于上行代碼,通常兩者合用
Expires實體報頭域給出響應過期的日期和時間。為了讓代理伺服器或浏覽器在一段時間以後更新緩存中(再次通路曾通路過的頁面時,直接從緩存中加載,縮短響應時間和降低伺服器負載)的頁面,我們可以使用Expires實體報頭域指定頁面過期時間。
例:Expires:Thu,15 Sep 2006 16:23:12 GMT
HTTP1.1的用戶端和緩存必須将其他非法的日期格式(包括0)看作已經過期。如:為了讓浏覽器不要緩存頁面,也可以利用Expires實體報關域,設定為0,jsp程式如下:
response.setDateHeader(“Expires”, “0”);
//JSP
禁止緩存代碼
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.flushBuffer();
另,網上各種禁用戶端緩存總結如下:
HTM網頁
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
ASP網頁
<%
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1 Response.cachecontrol = "no-cache"
%>
PHP網頁
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
JSP
response.setHeader("Pragma","No-Cache");
response.setHeader("Cache-Control","No-Cache");
response.setDateHeader("Expires", 0);
C#中禁止cache的方法!
Response.Buffer=true;
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;