2012年3月21日 星期三

轉貼 AJAX cache更新問題

自己要用到一個AJAX 更新資料的網頁發現的,預設的cache 是打開得,所以會存放上次的資料,但是我是要每一段就要更新的,所以必需要找個方式吧cache 關掉或繞過他才能達到我想要得效果。

在*中有提到四個方式:


1.在請求的URL後面加一個時間參數,如: time=new date() 當然也可以添加其他性質參數,只要是隨機參數就可以,
open("GET",url+"?t="+Math.random(),false) 或者 url+"?timeStamp="+new Date().getTime();  

2.  新增 js 代碼   
  function ajaxRead(file){ var xmlObj = null; if(window.XMLHttpRequest){ xmlObj = new XMLHttpRequest(); } else if(window.ActiveXObject){ xmlObj = new ActiveXObject("Microsoft.XMLHTTP"); } else { return; }  xmlObj.onreadystatechange = function(){ if(xmlObj.readyState == 4){ processXML(xmlObj.responseXML); } else{ document.getElementById ('playernews').innerHTML='採用AJAX來實現資料的讀取,正在載入...'; } } xmlObj.open ('GET', file, true); xmlObj.send (''); } function show() { ajaxRead('*.jsp'); setInterval("ajaxRead('new.php')",30000); //自動更新 }   

3.加上
xmlhttp.setRequestHeader("Cache-Control","no-cache");  

4.在XmlHttpRequest發送請求之前加上 XmlHttpRequest.setRequestHeader("If-Modified-Since","0"), 如:在 XXXXX.send(YYYYYY).



我沒有全部利用過,只使用過1就能達成效果。

參考:* 解決Ajax更新不及時的途徑,IT專家網

沒有留言: