1.項(xiàng)目用IE瀏覽器打開(kāi)修改前端內(nèi)容,后臺(tái)數(shù)據(jù)修改了,但是前端頁(yè)面內(nèi)容不變,詳細(xì)內(nèi)容如下圖所示:
2.對(duì)參數(shù)進(jìn)行修改操作
3.點(diǎn)擊保存后頁(yè)面刷新后,內(nèi)容仍然不變
4.沒(méi)有改變
5.用谷歌瀏覽器操作,內(nèi)容已經(jīng)改變。
6.前臺(tái)代碼
多半是由緩存引起的,你查詢(xún)這部分信息的接口有使用隨機(jī)參數(shù)保證使用的不是緩存數(shù)據(jù)嗎
這個(gè)問(wèn)題之前有遇到過(guò),當(dāng)時(shí)在Safari下偶現(xiàn),在ie下必線(xiàn)。chrome正常
這是因?yàn)間et請(qǐng)求的時(shí)候Safari和ie會(huì)緩存,導(dǎo)致修改完后調(diào)用的是上一次緩存的結(jié)果。
解決方法是在ajax請(qǐng)求是設(shè)置cache:false,不緩存
也可以全局設(shè)置
//不緩存
$.ajaxSetup({ cache: false });
看題主的地址,都加了 rand=Math.random()
,所以這部分應(yīng)該是沒(méi)有緩存問(wèn)題的。
不過(guò)問(wèn)題是代碼中的鏈接似乎只有 ...update
那個(gè)跟數(shù)據(jù)有關(guān),但是這個(gè) update 的行為到底是從服務(wù)器更新到客戶(hù)端(取),還是從客戶(hù)端更新到服務(wù)器(存)?從 update 本身常用的場(chǎng)景來(lái)看,這里應(yīng)該是取。但是大 form 行為來(lái)看,它又應(yīng)該是存……
先不說(shuō)這個(gè)。從題主的描述,實(shí)際上存在兩個(gè)過(guò)程,一個(gè)是存,一個(gè)是取。通常問(wèn)題會(huì)出現(xiàn)在取的時(shí)候,所以大家都猜測(cè)是由于緩存引起的……不過(guò)通常不代表一定,所以應(yīng)該做個(gè)排查
IE 里存,Chrome 里取
Chrome 里存,IE 里取
我們已知 Chrome 是正常的,那 IE 是在存的時(shí)候不正常還是在取的時(shí)候不正常還是都不正?!透愕妹靼琢?/p>
然后怎么辦……純前端我也不知道怎么辦。如果排除了緩存的問(wèn)題,剩下的事情就要跟服務(wù)端配合一起來(lái)找問(wèn)題了……
我之前也遇到過(guò)這個(gè)問(wèn)題,IE會(huì)緩存所有請(qǐng)求數(shù)據(jù),對(duì)于非靜態(tài)數(shù)據(jù)請(qǐng)求響應(yīng)添加header: Cache-Control: no-cache, no-store
F12看看有沒(méi)有報(bào)錯(cuò) 沒(méi)有報(bào)錯(cuò) 清空緩存
應(yīng)該是緩存的問(wèn)題。 IE 和 Edge (up to 14; Edge 15 我沒(méi)測(cè)過(guò)…) 默認(rèn)情況會(huì)緩存 GET 的 XHR 內(nèi)容。解決的辦法通常是
采用 POST 方式請(qǐng)求而不是 GET (不推薦…)
請(qǐng)求時(shí)添加隨機(jī)參數(shù)如 ?t=[[某個(gè)時(shí)間戳]]
@Donle 的 Cache-Control
方法沒(méi)有試過(guò)…