本篇內(nèi)容主要講解“ajax調(diào)用中ie緩存問(wèn)題怎么解決”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“ajax調(diào)用中ie緩存問(wèn)題怎么解決”吧!
創(chuàng)新互聯(lián)是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營(yíng)經(jīng)驗(yàn)。主營(yíng)GPU顯卡服務(wù)器,站群服務(wù)器,溫江服務(wù)器租用,海外高防服務(wù)器,機(jī)柜大帶寬、租用·托管,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。本文實(shí)例分析了ajax調(diào)用中ie緩存問(wèn)題解決方法。分享給大家供大家參考,具體如下:
ajax請(qǐng)求調(diào)用的過(guò)程中發(fā)現(xiàn)的問(wèn)題:后臺(tái)請(qǐng)求是一個(gè)簡(jiǎn)單的.aspx文件,而這個(gè)頁(yè)面又沒(méi)有考慮過(guò)緩存的影響,使用ajax調(diào)試的時(shí)候發(fā)現(xiàn)有時(shí)候根本不走后臺(tái)代碼直接返回結(jié)果了,所以估計(jì)是受到瀏覽器緩存的影響。網(wǎng)上搜了一下,果然是緩存的問(wèn)題:“IE中如果XMLHttpRequest提交的URL與歷史一樣則使用緩存,根本不向服務(wù)器端提交。因此無(wú)法取到剛提交的數(shù)據(jù)或新的數(shù)據(jù)”。
解決方法大致有下面幾種:
1、只改進(jìn)服務(wù)器端
(1)后臺(tái)是簡(jiǎn)單的.aspx文件,直接加上
復(fù)制代碼 代碼如下:
<%@ OutPutCache Location="None"%>
即可。
(2)但是如果后臺(tái)是.ashx文件通常在類里直接修改緩存設(shè)置。
復(fù)制代碼 代碼如下:
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2、只改進(jìn)客戶端
(1)利用加隨機(jī)數(shù)或加時(shí)間戳改變請(qǐng)求地址
a、加隨機(jī)數(shù):
復(fù)制代碼 代碼如下:
var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;
b、加時(shí)間戳:
復(fù)制代碼 代碼如下:
var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;
這一種解決方案,只需要加個(gè)時(shí)間或隨機(jī)數(shù)作為參數(shù),服務(wù)器端不需要任何改動(dòng)就可以達(dá)到目的。
(2)前臺(tái)異步調(diào)用設(shè)置XMLHttpRequest對(duì)象的屬性
在XMLHttpRequest發(fā)送請(qǐng)求之前加上
復(fù)制代碼 代碼如下:
XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
個(gè)人認(rèn)為這個(gè)才是“正道”。因?yàn)槟悴荒苊鞔_哪些ajax請(qǐng)求是需要還是不需要緩存的(解決網(wǎng)站的性能瓶頸,利用有緩存的ajax居多),所以每次在發(fā)送請(qǐng)求的時(shí)候確認(rèn)一下是否要緩存,相對(duì)于2中的第(1)條顯然少寫(xiě)了一個(gè)url參數(shù),而且服務(wù)器端(改進(jìn)方法1)也不需要改變?cè)O(shè)置,但是對(duì)于已經(jīng)封裝好的ajax庫(kù),你可能已經(jīng)不能在外面直接使用XMLHttpRequest對(duì)象了,通常的設(shè)置語(yǔ)法可能是將("If-Modified-Since","0")作為參數(shù)傳遞:ajaxObj.sendPost(其他參數(shù)列表,...."If-Modified-Since","0"); (post方式)
或者 ajaxObj.sendGet(其他參數(shù)列表,...."If-Modified-Since","0"); (get方式)
到此,相信大家對(duì)“ajax調(diào)用中ie緩存問(wèn)題怎么解決”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!