IE浏览器下异步请求的缓存问题

问题:

在做即时通讯时,需要提示用户有几条未读的提醒,这个是(如果有新的提示消息立马在浏览器无刷新提示)即时获取的。但我们的做法是,当用户点击未读信息进入到信息显示页面时重新获取下未读的提醒;但是在IE浏览器下,在新窗口打开以后没有重新获取请求,再次刷新页面也没有看到请求地址。但是如果将链接打开方式改为target=_self或者_parent就不会出现这样的情况,会有第二次请求;

 

原因分析:因为IE浏览器对请求进行了缓存。。。。。也有可能跟链接的打开方式(target="_blank/_self")有关;

 

解决办法:

1,在请求地址后面追加随机数或时间戳 $.get(‘url’,{t:Math.random()}); 这样就不会调用缓存而是发送新的请求;(最简单)

 

2,使用$.ajax()发送请求,设置cache:false; 不使用框架代码:XMLHttpRequest.setRequestHeader("If-Modified-Since","0"), 或者XMLHttpRequest.setRequestHeader(‘"Cache-Control","no-cache"’)

 

3,在服务器端修改更改相应header(‘Cache-Control:no-cache,must-revalidate)

posted @ 2016-03-18 15:07  The_Wind_Rises  阅读(1206)  评论(1编辑  收藏  举报