禁止ajax緩存獲取程序最新數(shù)據(jù)的方法

2019-08-14 17:44 更新
我們都知道ajax能提高頁(yè)面載入的速度主要的原因是通過(guò)ajax減少了重復(fù)數(shù)據(jù)的載入,也就是說(shuō)在載入數(shù)據(jù)的同時(shí)將數(shù)據(jù)緩存到內(nèi)存中,一旦數(shù)據(jù)被加載其中,只要我們沒(méi)有刷新頁(yè)面,這些數(shù)據(jù)就會(huì)一直被緩存在內(nèi)存中,當(dāng)我們提交 的URL與歷史的URL一致時(shí),就不需要提交給服務(wù)器,也就是不需要從服務(wù)器上面去獲取數(shù)據(jù),雖然這樣降低了服務(wù)器的負(fù)載提高了用戶的體驗(yàn),但是我們不能獲取最新的數(shù)據(jù)。為了保證我們讀取的信息都是最新的,我們就需要禁止他的緩存功能。

解決方案有如下幾種:

1、在ajax發(fā)送請(qǐng)求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。

2、在ajax發(fā)送請(qǐng)求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。

3、在URL后面加上一個(gè)隨機(jī)數(shù): "fresh=" + Math.random();。

4、在URL后面加上時(shí)間搓:"nowtime=" + new Date().getTime();。

5、如果是使用jQuery,直接這樣就可以了$.ajaxSetup({cache:false})。這樣頁(yè)面的所有ajax都會(huì)執(zhí)行這條語(yǔ)句就是不需要保存緩



ajax頁(yè)面無(wú)刷新 IE下遭遇Ajax緩存導(dǎo)致數(shù)據(jù)不更新的問(wèn)題


在IE下用Ajax請(qǐng)求某一頁(yè)面,通常會(huì)因?yàn)榫彺娴脑蚨祷厣弦淮蔚慕Y(jié)果,造成混亂,[即get方式時(shí),獲取數(shù)據(jù),因發(fā)送參數(shù)和地址都一致,故IE瀏覽器會(huì)從緩存中取,而不會(huì)去請(qǐng)求服務(wù)器端,而post方式因?yàn)閰?shù)的不同,不會(huì)產(chǎn)生這個(gè)問(wèn)題]而FF下不會(huì)出現(xiàn)這種情況。為了不受緩存影響,可以這樣做:

IE訪問(wèn)策略
Internet選項(xiàng)--瀏覽歷史記錄--設(shè)置-- Internet 臨時(shí)文件的選項(xiàng)改為每次訪問(wèn)網(wǎng)頁(yè)時(shí)也可以
1: 在AJAX請(qǐng)求的頁(yè)面后加個(gè)隨機(jī)函數(shù),我們可以使用隨機(jī)時(shí)間函數(shù)

在javascript發(fā)送的URL后加上
1 t=Math.random()

例如這樣:
1 URL+"&"+"t="+Math.random();//或者new Date();

在 URL 參數(shù)后加上 www.hake.cc
1 "?timestamp=" + new Date().getTime();

最好的方法
1 $.ajaxSetup({cache:false})
這樣頁(yè)面中所有的ajax請(qǐng)求時(shí),都執(zhí)行這個(gè)。就不必改已經(jīng)完成的N個(gè)接口


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)