禁止ajax缓存的几种方法介绍
我用到最多的禁止ajax缓存的方法是后面带随机参数,每次发送后面的参考都是随便生成的一串数字这样就可以不缓存数据了。
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等等这类禁止方法都未测试,所以不拿出来说了。