今天實現網站註銷功能時,需要清除cookie緩存,開始在網上搜索的是“js清除緩存”,發現很多都是預先防患緩存存儲的內容,千篇一律,不過也學習到了;後來換成"js清除cookie"才找到自己想要的結果。 先學習一下預先防治緩存存儲的方式吧 在http中,控制緩存開關的欄位有兩個:Pragma 和 C ...
今天實現網站註銷功能時,需要清除cookie緩存,開始在網上搜索的是“js清除緩存”,發現很多都是預先防患緩存存儲的內容,千篇一律,不過也學習到了;後來換成"js清除cookie"才找到自己想要的結果。
先學習一下預先防治緩存存儲的方式吧
在http中,控制緩存開關的欄位有兩個:Pragma 和 Cache-Control,後者擁有最高優先順序,只要與其他設置相抵觸,一律覆蓋之。
Pragma有兩個欄位Pragma和Expires。Pragma是http1.0欄位,值為no-cache時,表示禁用緩存,當一個no-cache請求發送給一個不遵循HTTP/1.1的伺服器時,客戶端應該包含pragma指令; Expires的值是一個GMT時間,表示該緩存的有效時間,優先順序低於Cache-Control:max-age,兩者同時出現,expires被覆蓋;如果都沒有出現。也沒有其他緩存,則瀏覽器預設採用啟髮式演算法,取Date_value-Last-Modified_value(請求資源最後一次修改時間)值的10%作為緩存時間
Pragma是舊產物,已經逐步拋棄,有些網站為了向下相容還保留了這兩個欄位。如果一個報文中同時出現Pragma和Cache-Control時,以Pragma為準。同時出現Cache-Control和Expires時,以Cache-Control為準。即優先順序從高到低是 Pragma -> Cache-Control -> Expires
以兩個常用值舉例 no-cache: 不管本地副本是否過期,瀏覽器、緩存伺服器在使用資源副本前都要到源伺服器進行副本有效性校驗。
must-revalidate:本地副本過期前,瀏覽器、緩存伺服器可以使用本地副本;本地副本一旦過期,必須去源伺服器進行有效性校驗。
頭部設置
<!--在頭部加上此三句即可禁用緩存-->
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="content-type" content="no-cache, must-revalidate" />
<meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT"/>
reset清除表單的臨時緩存
<body onLoad="javascript:document.表單名.reset()">
ajax獲取情書數據加上請求頭
$.ajax({
......
beforeSend :function(xmlHttp){
//緩存校驗欄位,值為資源最後一次的修改時間,即上次收到的Last-Modified值
xmlHttp.setRequestHeader("If-Modified-Since","0");
//相當於max-age:0,must-revalidate即資源被緩存,但是緩存立刻過期,同時下次訪問時強制驗證資源有效性
xmlHttp.setRequestHeader("Cache-Control","no-cache"); },
success:function(response){
//操作
}
async:false
});
ajax請求數據直接不緩存
$.ajax({
......
cache:false, //不進行緩存
success:function(response){
//操作
}
async:false
});
利用隨機數與時間戳讓每次請求不相同,不僅是頁面,js、css等資源也可以使用這樣的方式
URL 參數後加上 "?ran=" + Math.random(); 或 "?ran=" + new Date().getTime(); //當然這裡參數 ran可以任意取了
用當前頁面覆蓋原頁面防止回退
window.location.replace("你要覆蓋的頁面");
然後是js對cookie的操作
設置cookie
document.cookie="key="+value;//cookie一般以鍵值對的方式存在,也可以自定義儲存方式
獲取cookie
cookieArray=document.cookie.split(';');
for(var i=0;i<cookieArray.length;i++){
//操作;key:cookieArray[i].split('=')[0];value:cookieArray[i].split('=')[1]
}
刪除cookie只需要設置時間過期即可
document.cookie=key+"="+你想操作的cookie+":expire="+new Date(0).toGMTString();