ajax 清理缓存实例
时间:2011-01-20 来源:陈国立
总结
Ajax在解决缓存时有三种办法。
1、加时间戮
对于一个浏览器,你的第一次点击是会调用rpc请求的, 但是你再用同一个浏览器提交表单的时候, rpc不会被提交, 因为参数一样, 这个可能是ajax的XMLHttpRequest对象的问题, 如设置了时间间隔了,实际上是(new ActiveXObject("Microsoft.XMLHTTP"))所以, 在实际操作的时候, 给rpc的参数传递一个没有用的guid= new Date().getTime()
一个时间戳 ,以保证每次的点击事件都会激发rpc请求, 因为这样的参数(或者说url)是不一样的。
为什么要把时间戳追加到目标url?
在某些情况下, 有些浏览器会把多个XMLHttpRequest请求的结果缓存在同一个url。如果对每个请求的响应不同,这就会带来不好的结果。把当前时间戳追加到url的最后,就能确保url的唯一性,从而避免浏览器的缓存结果。
2、在要异步获取的页面中写一段禁止缓存的代码:
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();