1. 程式人生 > >IE下Ajax快取問題的解決辦法

IE下Ajax快取問題的解決辦法

今天在做一個用ajax聊天的時候,在chrome瀏覽器中可以,但在IE下遭遇Ajax快取戲弄(老是給出與上一次一樣的結果),因為剛開始並不知道IE有這個壞毛病,總結一下解決辦法:
在IE下用Ajax請求某一頁面,通常會因為快取的原因而返回上一次的結果,造成混亂,而FF下不會出現這種情況。為了不受快取影響,可以這樣做:

IE訪問策略:Internet選項--瀏覽歷史記錄--設定-- Internet 臨時檔案的選項改為每次訪問網頁時也可以

1: 在AJAX請求的頁面後加個隨機函式,我們可以使用隨機時間函式

在javascript傳送的URL後加上t=Math.random()
例如這樣:URL+"&"+"t="+Math.random();或者new Date();

2: 在XMLHttpRequest傳送請求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")

一般情況下,這裡的XMLHttpRequest不會直接使用
你應該可以找到這樣的程式碼
XXXXX.send(YYYYYY);
那麼,就把它變成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);
實踐證明,兩種方法都非常有效。
1、在服務端加 header("Cache-Control: no-cache, must-revalidate");
2、在ajax傳送請求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
3、在ajax傳送請求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 引數後加上 "?fresh=" + Math.random(); //當然這裡引數 fresh 可以任意取了
5、第四種方法和第三種類似,在 URL 引數後加上 "?timestamp=" + new Date().getTime(); //推薦使用這種方式
6、用POST替代GET:不推薦