解决IE6.0.2800压缩HTTP数据Bug之草记

本文描述了一个关于IE6浏览器在特定版本下遇到的脚本加载问题,特别是当脚本带有时间戳参数时,可能导致省份/城市/地区下拉列表加载失败。通过调整时间戳后的文件扩展名,成功解决了此问题。

质量组急报,众多买家在购买商品后重新选择收货地时,省份/城市/地区下拉列表一片空白。如下图:

一番研究,未果。甚至难以重现此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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值