关闭

Ajax缓存问题的解决办法

539人阅读 评论(0) 收藏 举报

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:989436次
    • 积分:13806
    • 等级:
    • 排名:第903名
    • 原创:332篇
    • 转载:403篇
    • 译文:27篇
    • 评论:42条
    新浪微博 @billfeller