如果我使用gzip压缩的JavaScript文件,Chrome和Firefox都会出现非法的字符/令牌错误

时间:2012-02-29 15:38:31

标签: javascript firefox google-chrome gzip

我在MacBook上使用内置服务器。

说我的脚本是foo.js.这适用于我的测试浏览器(Firefox 10,Chrome 17):

<script type="text/javascript" src="foo.js"></script>

但是,如果我gzip该文件,在将上面的行改为此后,两个浏览器都会给我一个非法的令牌/字符错误:

<script type="text/javascript" src="foo.js.gz"></script>

是什么给出的?类型是否需要更改或者其他什么?这种做法记录在哪里?每当我在网上看到它提到“压缩你的脚本!”时,没有人会提到你需要对链接做任何特别的事情。

3 个答案:

答案 0 :(得分:9)

网络服务器需要告诉浏览器内容是否已被gzip压缩。这是使用content-encoding标头完成的。也许你可以配置你的web服务器来为这个头提供以.gz结尾的文件。

网络服务器通常具有动态压缩文档的功能,而不是静态压缩文件。这意味着您将普通的foo.js文件放在文档根目录中,并将Web服务器配置为在将其发送到客户端时对其进行压缩。

答案 1 :(得分:4)

我有类似的错误。检查与您的foo.js对应的网络选项卡。在响应标头中,请求的标头应包含 Content-Encoding:gzip Content-Type:application / javascript 。否则,浏览器不会解压缩您的文件。浏览器应该知道对文件进行了哪种内容编码。

答案 2 :(得分:2)

如果您的gzip设置太高,也会发生此错误。我已尝试gzip -9,即使发送正确的内容编码,我也收到此错误。当我刚刚通过gzip file.js运行常规gzip时,它可以正常工作。