bug情況說明:
項目中有一個通過二級省市聯(lián)動添加面試城市的需求钧敞,每次添加或刪除城市后會使用ajax重新加載省市數(shù)據(jù)官帘,已添加城市再次添加時則不再顯示妒御。
在IE瀏覽器做了新增后佩厚,重新加載的數(shù)據(jù)和未新增之前的返回數(shù)據(jù)一樣蚊惯,如新增“邢臺市”,則IE下請求結果如下圖所示:
而谷歌的數(shù)據(jù)和數(shù)據(jù)庫的數(shù)據(jù)是一致的佳晶。開始以為是js代碼在IE瀏覽器運行錯誤桅狠,打開IE控制臺后,發(fā)現(xiàn)代碼并沒有報錯轿秧。
于是我想是不是在IE下垂攘,請求沒有發(fā)生。但是在IE瀏覽器是捕獲了請求的淤刃!但是,在IE返回的304Vㄐ汀R菁帧!每次請求走的都是緩存=蛑汀铝侵!
IE下的ajax請求是按照IP地址和請求路由進行緩存。如果ajax請求使用的請求方式是get触徐,同時參數(shù)咪鲜、路徑相同,ajax會先從本地緩存中取撞鹉。
解決方案:
1.直接在請求地址后面加一個時間戳或者是隨機數(shù)
如:url: basepath+'/api/user/address?t=' + Math.random(),
2.禁止緩存
①前端頁面禁止緩存:
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache">
注:此方法在本地驗證依然有緩存疟丙,知道原因的朋友請麻煩告知颖侄,謝謝
②前端ajax禁止緩存:ajax參數(shù)cache設置為false。默認為true享郊,設置后將不會從瀏覽器緩存中加載請求信息览祖。
以上就是會對IE緩存問題的解釋,頁面頭部阻止緩存的方法暫時沒有生效炊琉,后面找到原因會來更新展蒂,希望了解的朋友告知,謝謝苔咪。