IE6 调用gzip压缩后JavaScript不执行的解决方法

IE6下面调用开启了gzip压缩Javascript的时候,时常会碰到无法执行的情况,有可能是src调用,有可能是ajax调用,其它的浏览器工作正常,唯独IE6不能正常工作。

出现这个BUG的状况如下:

1. 用户使用IE6浏览器

2. 服务器没有设置 被请求文件(javascript) expires, cache-control.

3. 服务器端开启了chunked encoding模式

4. 通过javascrip的src调用方式或者ajax请求javascript文件

5. 有可能是通过php生成的javascript文件

6. 服务器端开启了gzip压缩

解决这个问题,我们要在服务器的cache-control和expires 头信息上做点工作。

经过测试,header头信息如下的gzip压缩过的javascript调用可以正常工作。

Cache-Control:maxage=1
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/x-javascript;charset=GBK
Date:Wed, 01 Dec 2010 01:24:07 GMT
Expires:Wed, 01 Dec 2010 01:24:08 GMT
Pragma:public
Server:nginx
Transfer-Encoding:chunked

分析上面的头信息,我们可以注意到:

1. cache-control必须要设置成maxage=time的格式,maxage是指定缓存生效时间,1为1秒

2. Expires必须要设置,它的时间稍大于Date即可,Date是页面请求时间,Expires是过期时间

3. Pragma设置为public

设置好了这两个参数,一般就可以了。

在服务器端,我们需要对服务器配置
location ~* \.(ico|css|js|png|jpeg|jpg|gif|rar|zip|7z|gz|pdf) {
expires 1d;

}

如果javascript文件是由PHP生成的,我们就需要利用php来输出header控制了。

<?php
$expires = 1;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
header("Content-Type: application/x-javascript;charset=GBK\n");


实际应用中,需要灵活配置,Javascript文件,请尽可能通过服务器发送header头,PHP生成javascript文件,效率本来就不高,再加上额外需要输入header头,更是得不偿失。


转自:http://blog.netroby.com/article-3863.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值