Ajax缓存问题的解决办法

本文介绍了两种有效的解决Ajax缓存问题的方法:一是通过在请求URL后添加随机数;二是利用XMLHttpRequest设置请求头来禁止使用缓存。这两种方法在实践中被证明能够有效避免因缓存造成的开发困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值