IE6 与 GZIP, BUG汇总
msdn上的说法:
If you use a Cache-Control: no-cache HTTP header to prevent the files from caching, remove that header. In some situations, if you substitute an Expires HTTP header, you do not trigger the problem.
-or-
Do not enable HTTP compression for the script files.
扩展指令 中一个常见的东西是 none-check post-check 和 pre-check. 这玩意是IE5被加入的. 所以如果响应头中有这几个扩展指令,那么IE就会认得他们, 我经常在一些 为了解决 cache + gzip 命中ie6 JSONP 请求,导致脚本不执行bug的方案中见到这几个扩展指令,其目的是为了让IE放弃使用本地缓存. 我倒是觉得,对IE6放弃使用gzip,是更合理的做法. 当然缺点也很明显, 如果是cdn部署静态资源.显然这样做会很困难.
关于这几个扩展指令的, 参考msdn 的描述:http://msdn.microsoft.com/en-us/library/ms533020%28VS.85%29.aspx#Use_Cache-Control_Extensions
- post-check
- Defines an interval in seconds after which an entity must be checked for freshness. The check may happen after the user is shown the resource but ensures that on the next roundtrip the cached copy will be up-to-date.
- pre-check
- Defines an interval in seconds after which an entity must be checked for freshness prior to showing the user the resource.
一张图:
那么这个a.js就可能在某次不被执行. (请注意这个问题和 之前gzip第一个bug情形不同.上一个是no-cache出现bug. 而这个,已经和http,cache无直接关系了.当然,如果你配置了no-cache,那么这个bug也是肯定会触发的,具体原因,请看解决方案中的第三条.所以某种角度来说,这个问题,可能和第一个bug描述,仍然有间接关系.只不过,我个人测试情况是,20个iframe,如果请求的js都是不同的url,那么即使配置no-cache,也没有触发我们的bug2,但是这回带来bug3.我们会在bu3中描述它. 但如果配置no-cache,多个iframe中请求相同的url的js,那么bug2就仍然会被触发.这是因为我们预加载已经失去意义.)
如果a.js在 iframe中是document.write,或appendChild等动态方式.那么bug发生几率会都陡升.
如果a.js在同一个页面被引入多次,则不会有任何问题. 原因是,IE6+有一个优化策略.当同一个页面多次引入一个相同的资源时,后续资源不会走网络模块,也就是说,不会发起请求.而直接从以资源url为索引的内存中直接使用该资源. 所以就不会发生问题.
IE7+,在前面多个iframe中引入 同一个.js时,会有类似 同一页面多次引入同一.js时同样的优化策略.不发起请求. 不考虑IE7是否有gzip bug. 即使有,也会因为,没有走网络模块而绕过了gzip bug.
解决方案 :
1. 放弃缓存,比如去掉max-age= xxx,去掉Expires ,或让他们为一个过期值. 或添加 no-cache,no-store.(此项是不被推荐的,因为它只是降低bug触发几率)
2. 放弃gzip .
3. 让IE6,在top页预加载一次.js资源. 这样, 在多个iframe中. 引入的.js,会直接走cache.在后续iframe请求.js 都走cache的情况下会绕过这个bug. (如果用户是ctrl+ f5,强制刷新.都不走cache,当iframe很多,资源加载很多次时bug触发概率也会陡升,也就是说,预加载资源只能解决常规问题.一些特殊情况仍然无法绕过. 当然,普通的f5是ok的因为普通的f5,会触发IE6的优化策略.这时候其行为会像前面提到的IE7+那样,对多个相同的资源,只走一次网络模块.所以就绕过了bug,而ctrl+f5则有几个就走几次网络模块.. 更重要的是,如果想让预加载产生效果,我们就必须给资源开启缓存. 如果资源不能被缓存,则预加载就失去了意义.这是要注意的情况.)
为了不浪费客户端性能, 我建议使用下面的代码来进行预加载.
<!--[if IE 6.0]> <script src="xxxx.a.js" type="text/c"></script> <![endif]--> |
这个代码的作用是,只有IE6进行预加载,而且 借助type="text/c" 让IE6只加载a.js 而不执行它....
总结:
转载于:https://www.cnblogs.com/_franky/archive/2012/04/28/2475223.html
IE6 与 GZIP, BUG汇总相关推荐
- IE6,IE7,IE8 css bug汇总以及兼容解决方法
断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...
- ie6,ie7,ie8 css bug汇总以及兼容解决方法 - xhuangtao
1:li边距"无故"增加 任何事情都是有原因的,li边距也不例外. 先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑 ...
- ie6常见css bug
IE6双倍边距bug 在IE6下如果某个标签使用了float属性,同时设置了其外补丁"margin:0 10px"可以看出,但第一个对象距左边有20px. 说明:这是因为块级对象默 ...
- 【IE6的疯狂之四】IE6文字溢出BUG
在IE6下使用浮动可能会出现文字重复的情况. 在IE6下,浮动层之间有注释文字的话,之前那个浮动层的内容文字就有可能遭遇一个"隐形"的复制,但是代码里查看文字可并没有多出来. 看个 ...
- [html] IE6文字溢出BUG(别名:多出来的猪、谍影重重)怎么解决呢?
[html] IE6文字溢出BUG(别名:多出来的猪.谍影重重)怎么解决呢? 删除注释或不设置浮动 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主 ...
- CSS IE6躲猫猫Bug
在IE6中,另一个很奇怪而且让人抓狂的 Bug,就是 peek-a-boo Bug.peek-a-boo 是大人把脸一隐一现,来逗小孩发笑的一种游戏.因此,中文把它称作IE6躲猫猫Bug. IE6躲猫 ...
- 修复IE6重复字符Bug
在IE6中,如果一个元素中包含多个浮动元素,某些情况下,最后一个浮动元素中的最后几个字符,会在该元素的下面重复出现,被称作"IE6重复字符Bug". 当父元素的宽度减去最后一个浮动 ...
- iOS16 系统bug汇总,续航发热情况,各机型升级建议
昨天苹果发布了iOS16首个测试版,今天和大家聊聊使用感受,已知bug汇总 以及 升级建议,作为小伙伴们升级iOS16的一个参考 需要说明的是,这是 iOS16 的首个开发者测试版,所谓测试版,就是苹 ...
- bug汇总——golang遇到的小问题
bug汇总--golang遇到的小问题 dial tcp: lookup proxy.golang.org: no such host 换一个国内能访问的代理地址:https://goproxy.cn ...
- web3.js使用bug汇总及解决方法
web3.js使用过程中各类bug汇总:More than one instance of bitcore-lib found;BigNumber Error;gasLimit无法解析而报错;js合约 ...
最新文章
- MySQL基础day03_数据的导入、导出-MySQL 5.6
- AI玩起音乐来“天赋”惊人,新版加州旅馆听过没?还是熟悉的老鹰乐队嗓音...
- JSP中文乱码问题终极解决方案(转)
- 发布一个定制的webpart:R***eader
- 图文并茂,傻瓜都能看懂的 JVM 内存布局
- 扭矩大好还是马力大好_发动机的马力重要还是扭矩重要?加速到底看哪个?
- Django入门实战【3步曲】
- QT qml---- loader使用方法
- word20161207
- 交叉驰豫的影响因素_深度讲解:膝关节韧带为什么容易断裂?这5点因素影响非常大...
- Diango博客--21.实现简单的全文搜索
- mysql 远程登陆设置_MYSQL远程登录权限设置
- 【Pycharm IDE】修改字体大小/设置缩略图/设置高亮
- 360安全浏览器极速模式怎么设置
- 解决app安装失败,并出现Package [pkg1] attempting to redeclare permission [perm] already owned by [pkg2]异常的问题
- GIS就业参考系列之方向篇——条条大道通罗马
- Direct3D 11 Devices 之 Using Direct3D 11 feature data to supplement Direct3D feature levels
- Java8新特性(三) – 流式数据处理
- 被新冠后遗症困住15个月后,斯坦福学霸被迫缺席毕业典礼,现仍需每天卧床16小时:我本该享受20岁的人生啊...
- 智慧校园管理系统,精细化+网格化