頁面緩存js問題解決

1.在jsp中加入頭

 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
 <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
 <META HTTP-EQUIV="Expires" CONTENT="0">

或者加入

   <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"/>


清除臨時緩存

<body onLoad="javascript:document.yourFormName.reset()">


2.在action,使用如下聲明

  response.setHeader("Pragma","No-cache");
  response.setHeader("Cache-Control","no-cache"); 
  response.setDateHeader("Expires", 0);


3.隨機參數document.write("<script src='test.js?rnd="+Math.random()+"'></s"+"cript>")。


4.jquery ajax清除瀏覽器緩存的兩種方法:


1.通過$.ajaxSetup 設置屬性cache:false,讓ajax不調用瀏覽的緩存.
     jQuery.ajaxSetup ({cache:false}) 

2.可以在ajax的url後加上隨機串來避免瀏覽緩存,如$.ajax({url:'test.php?'+parseInt(Math.random()*100000)})緩存

瀏覽器爲了提高用戶訪問同一頁面的速度,會對頁面數據進行緩存。當url請求地址不變時,有時候會導致瀏覽器不發送請求,直接從緩存中讀取之前的數據。如果數據改變了,而沒加隨機數,讀取的數據會跟之前一樣。加上隨機數,就是欺騙瀏覽器url改變了,會每次都向服務器發送請求而不去讀緩存.



5.有時候以上的方法清除緩存只清除一次,第二次就沒有效果了。

所以,本人認爲最佳的方法是,在調試的過程中,禁掉IE緩存,這樣調試就OK了。但是,用戶並不會禁掉呀,這不是出問題了嗎?

用戶會不會我們不去管,如果寫好了js代碼的話,我們在js文件後面加入一個版本號就好了。比如:

<script type="text/javascript" src="<%=baseURL%>/xhd_js/select-ajax.js?1.0"></script>

但是,如果開發者重新修改了js文件用戶怎麼辦?

修改之後確定使用之後,再加上

<script type="text/javascript" src="<%=baseURL%>/xhd_js/select-ajax.js?2.0"></script>

則可以解決問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章