Ajax缓存问题的解决办法

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值