文档章节

IE请求的缓存问题详解

k
 kds
发布于 2017/07/25 09:53
字数 876
阅读 19
收藏 1
点赞 1
评论 1

哈喽,大家好,今天跟大家分享一点关于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这个阿三,让他认为这是一次新的请求,这样问题就解决了。

© 著作权归作者所有

共有 人打赏支持
k

kds

粉丝 2
博文 6
码字总数 3680
作品 0
北京
加载中

评论(1)

百里青山
Nginx学习之九:实践学习指南

Nginx基础 1. nginx安装 2. nginx 编译参数详解 3. nginx安装配置+清缓存模块安装 4. nginx+PHP 5.5 5. nginx配置虚拟主机 6. nginx location配置 7. nginx root&alias文件路径配置 8. ngxht...

boonya ⋅ 2014/07/09 ⋅ 0

开放接口中权限验证的缓存问题——求详解

睡觉前提一个缓存的问题: 最近做restful风格的接口开发,对于每次请求服务的资源都做一次权限验证,通过后返回相关资源。但是考虑到请求的数目会比较多,所以对于每次请求都从数据库查询数据...

新人王 ⋅ 2012/05/26 ⋅ 5

浏览器 HTTP 协议缓存机制详解

最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control、为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又...

xrzs ⋅ 2015/01/19 ⋅ 15

ASIHTTPREQUEST详解

目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数据 下载文件 获取响...

AmoyAI ⋅ 2012/12/19 ⋅ 1

服务器后端开发系列——《实战Nginx高性能Web服务器》

1、高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例 内容:概述Nginx的背景知识和简单的入门实例。 2、高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“...

晨曦之光 ⋅ 2012/04/24 ⋅ 0

memcache 详解

http://www.cnblogs.com/xrq730/p/4948707.html MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系 统,用于动态Web应用以减轻数据库的负载。它通过在内存...

LCZ777 ⋅ 2016/08/09 ⋅ 0

掌握 HTTP 缓存——从请求到响应过程的一切(下)

原文链接:http://huziketang.com/blog/posts/detail?postId=58bd4dd1204d50674934c3b0 转载请注明出处,保留原文链接以及作者信息 CDN类的网站曾经一度雄踞 Alexa 域名排行的前 100。以前一...

胡子大哈 ⋅ 2017/03/06 ⋅ 0

后台开发常问面试题集锦(问题搬运工,附链接)

Java基础问题 String的’+’的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水线 抽象 & abstract关键字 Java final 修饰符知识点总结(必看篇) Java中的...

大黄有故事 ⋅ 2017/11/18 ⋅ 0

Android网络框架

Android OKHttp3.0 以上使用方法 Android OKHttp3.0 以上使用方法详解 Retrofit 之日志拦截 Retrofit 日志拦截相关介绍 Retrofit源码解析 Retrofit的源码分析将从基本的使用方法入手,分析r...

掘金官方 ⋅ 2017/12/12 ⋅ 0

Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据

前言 ,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 开发者的欢迎。 Github截图 如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 如此...

Carson_Ho ⋅ 2017/11/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 14分钟前 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部