項目上要兼容IE瀏覽器(客戶要求),發現之前在谷歌瀏覽器下,操作(增刪改查)列表后列表能即時刷新(雙向綁定),IE下卻不行。
自己調試一下發現,在IE11下,如果GET請求請求相同的URL,默認會使用之前請求來的緩存數據,而不會去請求接口獲取最新數據。
另外,在F12開發者模式一直打開着的情況下,是能夠正常即時刷新列表的,上面的假設也得到了進一步論證。
解決方法是,給每個請求的URL后加一個時間戳【new Date().getTime()】,這樣就保證了每一次請求的URL都不同,IE11就會不斷的請求接口而不使用緩存數據。
export function api_getList(params) { // 獲取記錄列表 return request({ url: 'list?temm=' + new Date().getTime(), method: 'get', params: params }) }
另外,更高級的做法是統一攔截所有請求,在請求發送前給每一個請求先加一個時間戳,更高效率地解決問題。
一開始以為是VUE對IE的兼容性問題,比如不支持因為IE不支持ES6的一些新特性什么的,但是其實問題只是出現在寫法上,只能說IE的兼容真的太難受了。
"我走了很長的路,有很多故事想要跟你講。"