为什么Safari不接受GZIP压缩?

时间:2012-09-11 12:28:26

标签: http safari gzip

我在这里有一个非常大的JavaScript文件,我希望将其嵌入到我的网站中。 HTTP服务器非常智能,可以在将文件传送到浏览器之前对文件进行GZIP。

但是,我使用Google Chrome和Safari进行了测试。

在Chrome上,它运行良好。 400K压缩到100k左右:

first

second

Safari压缩上的

不起作用:

third

fourth

有趣的是,在gz2b.png中你可以清楚地看到内容编码设置为“gzip”。


注意:我已经阅读了Safari中的GZIP-Bug,其中文件无法以“.gz”结尾,或者Safari不接受GZIP。由于我的文件不以.gz结尾,因此这个问题应该不是问题。

3 个答案:

答案 0 :(得分:9)

我也遇到了这个问题,同时尝试在iOS7 Safari移动iPad上优化网站的加载时间。

  • 已编码=未压缩的文件大小,来自服务器
  • 已解码=未压缩的文件大小,本地
  • 转移=未压缩文件大小+发送和接收的标头
  • Content-Length =从服务器发送的压缩文件

Safari选择了一种非常奇怪的方式在调试器中表示这些数字。

答案 1 :(得分:7)

发送到Safari的HTTP标头说它已被压缩(它有Content-Encoding:gzip标头,它说内容长度是119406字节) - 我相信那些超过粗体数字 430.61 在Web Inspector中。它如何确定顶部列中的这些数字,我不知道。

如果您使用wireshark嗅探HTTP请求,您可以验证线路上有多少字节。

答案 2 :(得分:1)

这是不久之前,但我刚遇到一个非常相似的问题,或者可能是这个问题的根源。使用gzip压缩数据进行safari时,如下所示:

gzip jquery.min.js

你最终会得到一个jquery.min.js.gz,即使正确指定为gzip编码文件流,也会在很多其他线程中提到的关于此问题的jquery.jgz重命名时在Safari中失败。这似乎是因为文件名是在gzip文件中编码的。

如果你像这样编码一个gzip文件:

cat jquery.min.js | gzip > jquery.jgz

然后你将拥有一个小几个字节的文件,并且可以与Safari完美配合。