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


今天實現網站注銷功能時,需要清除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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM