当前几乎所有的浏览器都具备Ajax缓存的功能,就是当你手动刷新页面时,没有提交到后台处理,总显示第一次载入的数据。但是这对于开发过程来说,Ajax缓存却相当的烦人,在网上找到两种比较好的解决方法:
1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数
在javascript发送的URL后加上t=Math.random()
例如这样:URL+"&"+"t="+Math.random();
2: 在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
一般情况下,这里的XMLHttpRequest不会直接使用
你应该可以找到这样的代码
XXXXX.send(YYYYYY);
那么,就把它变成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);
实践证明,两种方法都非常有效。
2012年04月12日 小记
今天在开发一个页面时忘记在ajax请求后添加随机序列,导致在IE8中每次刷新页面拿的数据都是缓存,还以为是代码问题,可是chrome下却没有问题,后用HttpWatch抓包终于发现IE老是取缓存中的数据,究竟是IE太sb,还是chrome在装B。
Url :http://itravel.smartcom.cc/~zhanhailiang/itraveladmin/htdocs/storage/hotel_creditcard_list.php?act=getCreditCard&hotelid=366
Result : (Cache)
Display URL Normal browser lookup of URL http://itravel.smartcom.cc/~zhanhailiang/itraveladmin/htdocs/storage/hotel_creditcard_list.php?act=getCreditCard&hotelid=366Completed
Started At 2012-Apr-21 22:18:53.021 (local time)Completed
Read Cache Content read from browser cacheCompleted
晕,暂时解决方案是在ajax请求url上统一加上'&r=' + Math.random();
找个时间仔细研究下不同浏览器之间缓存策略的差异。
转自:http://www.blogjava.net/dashi99/archive/2010/08/26/329973.html