IE请求的缓存问题详解
博客专区 > kds 的博客 > 博客详情
IE请求的缓存问题详解
kds 发表于6个月前
IE请求的缓存问题详解
  • 发表于 6个月前
  • 阅读 15
  • 收藏 1
  • 点赞 1
  • 评论 1

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: IE浏览器缓存问题总结

哈喽,大家好,今天跟大家分享一点关于IE缓存的知识。众所周知IE浏览器是我们开发人员非常不喜欢的浏览器,没有之一,但是IE在用户的使用比例上是相当的大的,毕竟程序员还不是那么的普及吗。

ok咱们不扯犊子了,直入正题。大家都知道IE浏览器的缓存是很强大的,但是强大的同时他也是很烦人的,列举一个大家都知道的IE的ajax请求问题,开发人员都知道IE的ajax请求也是会被放入缓存的,这也就意味着我们的ajax请求只有第一次请求的时候IE浏览器才会发送请求,一旦请求成功以后呢,当我们再次调用ajax请求的时候呢IE会直接读取缓存中的数据,这是一件令人很头疼的事情,但是ajax请求的参数总是变化的,这一点很重要,当我们ajax请求的参数变化时,IE才会把我们的请求当做一次新的请求,这也就是我们平时很难发现这个问题的原因了。

我这两天就刚好碰到了这个问题。

背景:我写了一个Excel导入功能,每次导入后,会给用户展示导入的日志,就是导入数据条数,每条标识,成功失败什么的。而我每次展示的数据都来自服务器的session,每次从session中取实现放进去的集合然后遍历打印日志,然后删除session中的缓存对象。

问题:我发现使用IE浏览器的时候存在一个问题,当我导入了多次不同内容的表格时,每次返回的日志都是第一次导入的日志,但是导入的数据是正常的数据。我感到非常的不理解。我特意输出的日志,输出的缓存我发现只有第一次导入的时候才会输出缓存中的对象(session中的内容也就是null),之后再倒入的时候都没有输出,这也就意味着只有第一次展示日志的时候执行了日志页面的代码,之后都不会再次执行。

原因:那么问题来了,这是为什么呢?我百度了好久也没有得到答案,后来我找到了IE浏览器关于ajax的bug。我发现这个问题和我的这个问题惊人的相似,我经过试验发现IE浏览器不知是ajax会存在这个bug,他的http请求同事也会存在缓存的问题,当我们的第二次请求和第一次请求的URL完全相同的时候,IE就不会认为这是一次新的请求,他也就不会发送新的http请求,而是直接取缓存中拿上次请求的结果,所以就出现了每次展示的结果都是第一次的原因了。

解决方案:那么这个问题怎么解决呢?很简单,和ajax的bug解决方法一样,只要把请求的URL后面加一个随机数参数就ok了,这样就可以骗过IE这个阿三,让他认为这是一次新的请求,这样问题就解决了。

共有 人打赏支持
粉丝 2
博文 6
码字总数 3680
评论 (1)
×
kds
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: