cache-control和zip压缩引起的在IE6下js和css失效

来源:互联网 发布:第三方支付数据 编辑:程序博客网 时间:2024/05/16 15:58

 线上服务的主要页面在IE6下竟然不能显示CSS,这是一个重大故障。于是查原因,先用httpwatch查看页面引用的CSS,可以正确下载,但是在页面中却没有起作用。

搜索查找到IE6有这样一个BUG,在使用可压缩方式输出并且不使用缓存的情况下,CSS不能被解释,包括JS。

查看我们输出CSS的服务器输出头域,确实是你不用压缩方式输出,并且头域中确实输出了cache-control:no-store的选项。

无疑触发了IE6的这个BUG。

 

但是有些节点的服务器是同一套发程序发布的,头域中同样存在上面两个选项,IE6访问却又正常。

经过比对,这些正常的服务器竟然是squid的老服务器,输出的HTTP协议是1.0,而cache-controlHTTP/1.1中定义的,也就是这些服务器上输出的cache-control:no-store

选项被忽略,反而正常了。真是太狗血了。

 

最后查找为什么要输出 cache-control:no-store,结果发现程序员的代码逻辑出错了,本来只有发生异常的时候才输出这个头(异常情况下不缓存,下次重新获取),结果

他老人家竟然把判断条件写错了,变成99.99%的用户走到这个分支。何止是狗血啊......

原创粉丝点击