您的位置:首页 > 其它

关于ajax请求在IE6,9下的缓存问题

2011-11-23 08:43 267 查看
最近的项目中,用到了很多ajax请求,大多用的都是jquery中的函数,如$.getJson(),为的是返回一个json格式的字符串便于后续操作。

这样写,看上去没有什么问题,在IE7、8,opera、fireFox下测试都没有什么问题。

但是,当在IE6和IE9下测试的时候,总是请求不到后台的新数据,然后怀疑是缓存问题,搜寻解决的办法,绝大多数朋友都说给页面的头部加如清楚缓存的代码。

<META HTTP-EQUIV=
"Pragma"
CONTENT=
"no-cache"
>
<META HTTP-EQUIV=
"Cache-Control"
CONTENT=
"no-cache"
>
<META HTTP-EQUIV=
"Expires"
CONTENT=
"0"
>
还有在Jsp页面头部加入

<%
response.setHeader(
"Pragma"
,
"No-cache"
);
response.setHeader(
"Cache-Control"
,
"no-cache"
);
response.setDateHeader(
"Expires"
,
0
);
response.flushBuffer();
%>
这些可能只要是页面刷新的情况下是有作用的,但也只是清除页面的缓存,而不是请求缓存。ajax请求不刷新页面,假如这些没有作用。
调试的时候发现,在IE6下当两次请求的action路劲一样的时候,就会没有进入action中的方法,但是返回数据依然有,不过是旧的。
这样的话,请求的action的路劲后面加入一个随机数,比如:
&.getJson("/login.do?rand="+Math.random(),function(data){});如此一来,每次请求都会进入action,当然缓存问题也就迎刃而解了。
另外还遇到一种情况,就是将上面的$.getJson("/login.do",{rand:Math.random()},function(data){})写成这样竟然不起作用,只有向上面一样写,才可以。
难道这是偶然情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: