前端不緩存,ajax不緩存,js操做cookie

今天實現網站註銷功能時,須要清除cookie緩存,開始在網上搜索的是「js清除緩存」,發現不少都是預先防患緩存存儲的內容,千篇一概,不過也學習到了;後來換成"js清除cookie"才找到本身想要的結果。javascript

先學習一下預先防治緩存存儲的方式吧css

在http中,控制緩存開關的字段有兩個:Pragma 和 Cache-Control,後者擁有最高優先級,只要與其餘設置相抵觸,一概覆蓋之。java

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%做爲緩存時間ajax

Pragma是舊產物,已經逐步拋棄,有些網站爲了向下兼容還保留了這兩個字段。若是一個報文中同時出現Pragma和Cache-Control時,以Pragma爲準。同時出現Cache-Control和Expires時,以Cache-Control爲準。即優先級從高到低是 Pragma -> Cache-Control -> Expires算法

以兩個經常使用值舉例 no-cache: 無論本地副本是否過時,瀏覽器、緩存服務器在使用資源副本前都要到源服務器進行副本有效性校驗。瀏覽器

must-revalidate:本地副本過時前,瀏覽器、緩存服務器可使用本地副本;本地副本一旦過時,必須去源服務器進行有效性校驗。緩存

頭部設置服務器

<!--在頭部加上此三句便可禁用緩存-->cookie

<meta http-equiv="pragma" content="no-cache" />dom

<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();

相關文章
相關標籤/搜索