1、在服務端(如php中)加上“header("Cache-Control:no-cache,must-revalidate");”;
2、在ajax發送請求前加上“anyajaxObj.setRequestHeader("If-Modified-Since","0");”;
3、在ajax發送請求前加上“anyajaxObj.setRequestHeader("Cache-Control","no-cache");”;
4、在ajax的URL參數後加上“"?fresh="+Math.random();//當然這裡參數fresh可以任意取了”;
5、第五種方法和第四種類似,在URL參數後加上“"?timestamp="+new Date().getTime();”;
6、用POST替代GET:不推薦。
1、加個隨機數:
代碼如下 |
複製代碼 |
xmlHttp.open("GET","ajax.asp?now="+new Date().getTime(),true); |
2、在要非同步擷取的asp頁面中寫一段禁止緩衝的代碼:
代碼如下 |
複製代碼 |
Response.Buffer=True Response.ExpiresAbsolute=Now()-1 Response.Expires=0 Response.CacheControl="no-cache" |
3、在ajax發送請求前加上“xmlHTTP.setRequestHeader("If-Modified-Since","0");”可以禁止緩衝:
代碼如下 |
複製代碼 |
xmlHTTP.open("get",URL,true); xmlHTTP.onreadystatechange=callHTML; xmlHTTP.setRequestHeader("If-Modified-Since","0"); xmlHTTP.send(); |
另一個作者寫到:
ajax的緩衝是由瀏覽器維持的,對於發向伺服器的某個url,ajax僅在第一次請求時與伺服器互動資訊,之後的請求中,ajax不再向伺服器提交請求,而是直接從緩衝中提取資料。
有些情況下,我們需要每一次都從伺服器得到更新後資料。思路是讓每次請求的url都不同,而又不影響正常應用:在url之後加入隨機內容,如:
代碼如下 |
複製代碼 |
url=url+"&"+Math.random(); |
Key points:
1、每次請求的url都不一樣(ajax的緩衝便不起作用);
2、不影響正常應用(最基本的)。
方法二(未經證實):
php中禁止緩衝
代碼如下 |
複製代碼 |
header("Cache-Control: no-cache, must-revalidate"); |
在JSP中禁止緩衝
代碼如下 |
複製代碼 |
response.addHeader("Cache-Control","no-cache"); response.addHeader("Expires","Thu,01 Jan 1970 00:00:01 GMT"); |
HTTP:
代碼如下 |
複製代碼 |
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache,must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="Wed,26 Feb 1997 08:21:57 GMT"> <META HTTP-EQUIV="expires" CONTENT="0"> |
上面提供的這些禁止ajax資料緩衝的方法只是常用的幾種我們還有如php,asp.net等等這類禁止方法都未測試,所以不拿出來說了。