解决IE6.0.2800压缩HTTP数据Bug之草记
来源:互联网 发布:mac截图后图在哪里 编辑:程序博客网 时间:2024/05/01 09:12
质量组急报,众多买家在购买商品后重新选择收货地时,省份/城市/地区下拉列表一片空白。如下图:
一番研究,未果。甚至难以重现此Bug。经过仔细调研买家的电脑操作系统/浏览器类型与版本/安装的插件…等等使用环境信息,最后猜测错因可能在买家使用的浏览器版本上。
获悉买家使用的浏览器为IE6.0.2800,安装虚拟机+win98+从天空软件站觅得的IE6.0.2800安装包,终于重现了买家遭遇的Bug。即第一次访问正常,而后则出现买家汇报的问题,且报脚本错误。删除脱机文件后再第一次访问又恢复正常,而后再错。
脚本错误出在选择收货地时加载的长达100K的地理数据脚本上。脚本虽大,但服务器端使用了压缩输出,而且浏览器加载一次后会缓存。性能问题暂且不表。细查脚本代码,也未发现错误。估猜是否浏览器从缓存中加载脚本时出现异常。
为避免脚本更新后与浏览器缓存不同步的问题,淘宝网站中引入的脚本之后都带时间戳,如:
http://www.taobao.com/xxx/xxx/china_division_new.js?t=20070328
偶然发现如果直接在地址栏填入上述URL,IE6.0.2800不能正确识别文件类型,如下图:
而其他版本的IE则能正确识别。如果去掉时间戳,或在时间戳后加上 .js 后缀,IE6.0.2800就可以正确识别了。
依此思路,将脚本src修改为 http://www.taobao.com/xxx/xxx/china_division_new.js?t=20070328.js 后,Bug消失。
后来从微软的知识库寻得了可能的理论根据,原来当IE6 sp1收到压缩的 HTTP 数据时,有可能导致HTML 页显示不完整。IE6 sp1 的版本号正是2800。IE6 sp2 已经修复了这个Bug,所以目前大多数用户使用的IE6 in WinXP sp2 都不会出现此问题。
再后来,承志告诉我,一年之前,他在编写淘宝网的CSS时就遭遇了这个诡异的问题——IE对CSS的缓存和GZip似乎有点冲突。当时采取的解决办法就是在css文件时间戳之后加上 .css 后缀。 正如IE在CSS上诡异的hacks一样,难以解释为什么增加了后缀信息就可以避开IE6的Bug。
- 解决IE6.0.2800压缩HTTP数据Bug之草记
- 解决 IE6 3像素Bug
- 变态IE6之奇数BUG
- http post请求时,数据过多,无法提交,bug解决
- 解决IE6背景图片不缓存的BUG
- IE6下position:fixed的bug解决
- IE6下 div 边框消失 bug解决
- 解决IE6背景图片不缓存的BUG
- 解决IE6背景图片不缓存的BUG
- 解决 IE6 IE7 onresize的bug
- 解决IE6背景图片不能缓存的bug
- 解决IE6双倍边距bug
- 解决IE6不支持positionfixed的bug
- 解决 IE6 IE7 onresize的bug
- hack解决IE6发生跳变bug
- ie6下几种bug的解决方式
- jQuery插件之-bgiframe解决ie6下select不被层遮盖的bug
- IE6 Bug之自战回顾
- Webdav漏洞ISNO方法的补充
- IBM公司面试的三道题
- 电脑连接电视全攻略
- backup中的tag的使用
- 21天学通C#阅读笔记(四)
- 解决IE6.0.2800压缩HTTP数据Bug之草记
- vs2008的页面嵌套模板
- Delphi 的绘图功能[13] - TBrush 类
- MYSQL FUNCTIONS
- 用户研究经验与总结
- ASP幻灯片
- 转浅谈数字电视CA技术
- js获取页面宽和高
- 醒悟