博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于使用AJAX获取数据时,由于IE缓存而导致数据不更新,串数据的问题!
阅读量:7066 次
发布时间:2019-06-28

本文共 1674 字,大约阅读时间需要 5 分钟。

万恶的IE!先吐槽一句!

      公司一个项目中的某数据需要使用到缓存机制,郁闷的事情就随之而来了。
测试部门反馈说切换账号时会串信息,反复查找都木有问题。浏览器也刷新了很多遍。
  后来问题找到了,老大看过代码后,说问题出现在了IE的缓存机制上!

 

    对于长期使用火狐进行WEB开发的程序员伤不起啊!关键时刻忘记使用IE进行测试了!

去网上查找了下该问题的资料,原来是IE会根据URL进行缓存,所以会出现切换帐号时串数据的问题!

问题既然找到了,解决办法就很简单了,既在AJAX的请求URL上添加一个随机数就行了!

 

资料:

一、IE缓存机制大体说明

IE的缓存是以URL为标识的文件形式存储。实现步骤分为存储和使用(验证)。

A>存储(标记)缓存

接收HTTP响应头====>存储并且标记缓存文件

B>使用(验证)缓存

接受用户操作====>判断并且使用缓存文件
下面两节将分别讲述这两个方面的实测结果。
二、IE如何根据HTTP相应头来存储(标记)缓存

(包含且不仅包含)以下HTTP响应头将可能影响到IE如何存储(标记)缓存:Age、Cache-Control、Date、ETag、Expires、Last-Modified、Vary。

本次实验仅测试Cache-Control、Expires、Last-Modified头对IE缓存的影响。

A>IE如何标记缓存

IE接收文件统一存放他们在一个目录下,并且给每个文件打下以下标记:

1、Internet地址

2、截止期限

3、上次修改时间

B>HTTP头对标记缓存的影响

1、当没有配置Cache-Control、Expires时:

IE将存储此文件,其截止期限为空

2、配置Cache-Control:no-cache时:

IE将不会存储此文件

3、配置Cache-Control:no-store|no-transform|must-revalidate时:

IE将视同没有配置Cache-Control

4、配置Cache-Control:max-age时

IE将存储此文件,其截止期限为Date头的值加上max-age的秒数

5、配置Expires时:

IE将存储此文件,其截止期限为Expires的值

6、同时配置Expires和Cache-Control:max-age时:

IE将存储此文件,其截止期限为Date头的值加上max-age的秒数(也就是说max-age将覆盖Expires,IE这样的处理是遵循HTTP1.1协议的)

7、配置Last-Modified时:

IE将存储此文件,其上次修改时间为Last-Modified的值

三、IE接受用户操作时如何使用(验证)缓存

A>IE对缓存的三个标记分别有以下用途:

1、Internet地址 —— 资源是否被缓存;

2、截止期限 —— 资源是否过期(是否重新向服务器请求的关键);

3、上次修改时间 —— 如果有这个值,向服务器请求时将加上If-Modified-Since,并且用此值填充。

B>实验得知,IE将用户操作分为以下几类:

1、前进后退

此时IE将无条件使用缓存中的文件,忽略截止期限的值。

2、从收藏夹访问、输入一个不同的地址

此时IE将使用截止期限的值来判断此缓存是否过期,如果过期则再次向服务器发器请求,反之则使用本地缓存

3、刷新

此时IE将向服务器发送一个请求

4、Ctrl 刷新

此时IE将向服务器发送一个请求,并且此请求中包括Cache-Control:no-cache;Pragmma:no-cache

四、有可能的后续实验,以及本次实验的局限性

1、测试更多头的影响,如Etag、Vary等

2、测试更广泛浏览器对协议的遵循使用情况

3、测试代理服务器软件对协议的遵循使用情况

 

五、测试工具、方法及其它附录

本次实验使用IE6 SP3、HTTPWatch Pro 6.0 IE插件、PHP5的Header函数、以及Excel记录测试画面。

更多方法、说明以及测试证据截图详见附件。(博客版欠奉..)

转载地址:http://amtll.baihongyu.com/

你可能感兴趣的文章
linux 可变 大小 磁盘6,Resize CentOS Linux hard drive partition (centos 6.3 调整LVS磁盘大小)...
查看>>
linux bash命令自动完成,RED HAT LINUX bash 自动补全命令安装
查看>>
linux服务器一直访问183.111.141.109,Linux服务器上11种网络连接状态
查看>>
linux内核编译找不到unistd,无法创建“arch/x86/syscalls/....../unistd_32.h”解决方法
查看>>
nobody nogroup linux vi nfs,nfs挂载后权限映射错误(nobody)的解决办法
查看>>
linux mlock源代码,LINUX系统调用mlock的代码分析-Read.DOC
查看>>
C语言编程求解传热学,中国石油大学计算传热学大作业2.pdf
查看>>
零基础学C语言设计难吗,【经验分享】零基础想学C语言,过来人提醒大家几点...
查看>>
c 语言mode10,C语言程序设计教案cjiboxue10.ppt
查看>>
C语言4个以上条件用if函数,if条件判断语句,谁能帮我分析一下?
查看>>
鸿蒙系统热情下降,2大系统同时官宣,华为、苹果针锋相对,用户态度截然不同...
查看>>
电视android系统怎么重启,电视一直出现android怎么办
查看>>
Android新浪微博分页加载,Android仿新浪微博分页管理界面(3)
查看>>
无线 iphone客户端测试白皮书(三)
查看>>
RAID级别详解,如何在Linux下实现软RAID图文解析。
查看>>
超越虚拟化-融合之道
查看>>
Open-E DSS V7 应用系列之八 远程访问和管理员密码恢复
查看>>
Apache - 403错误
查看>>
Max server memory是否需要配置?
查看>>
H5网页App和纯原生的App差距在哪?
查看>>