Ajax與IE6緩存問題及解決方案
本文向大家簡單介紹一下Ajax與IE6緩存問題,用ajax請求時,如果出現重復的URL,瀏覽器不會向服務器發送請求,而是根據之前相同的URL請求結果返回。
Ajax與IE6緩存問題
今天,有同事發現相關業務數據修改后,在IE6下還是顯示修改前的值。但在其他瀏覽器和IE7、IE8下,沒有這個問題。
原因:用ajax請求時,如果出現重復的URL,瀏覽器不會向服務器發送請求,而是根據之前相同的URL請求結果返回。原因就在于之前的請求及結果已經保存在了 緩存里,如果遇到相同URL時,結果是直接從緩存里取得。
解決辦法:
1、設置IE6中工具-internet選項-Internet臨時文件-設置-檢查每次網頁的較新版本-設置為每次訪問此頁時檢查。
2、在IE發送ajax數據時,發送一個隨機時間戳。即只要讓每次請求的URL不一樣就可以了,比如每次請求時在URL中加上時間的毫秒數或隨機數(new Date().getTime()或者Math.Random() )。
◆另外,網上還有很多其他的解決方法:
1.送請求前加上
- XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
或者用post方法提交
2.服務器端禁用緩存(只是禁止了服務端緩存,不能禁止ajax緩存) .
- response.setHeader("Pragma","No-cache");
- response.setHeader("Cache-Control","no-cache");
- response.setDateHeader("Expires", 0);
【編輯推薦】
- Javascript代碼輕松判斷IE6瀏覽器
- JS實現IE6下PNG圖片透明又出新方法!
- JavaScript數組元素刪除問題解決方案
- Javascript操作img解決網站提交數據異常問題
- JavaScript調試工具解決IE6等多版本共存問題