现在的位置: 首页 > 综合 > 正文

Ajax缓存问题的解决办法

2019年10月30日 ⁄ 综合 ⁄ 共 1125字 ⁄ 字号 评论关闭

当前几乎所有的浏览器都具备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

抱歉!评论已关闭.