2012-09-11 207 views
6

我在这里有一个很大的JavaScript文件,我想嵌入到我的网站。 HTTP服务器足够智能,可在将文件传送到浏览器之前对其进行GZIP处理。为什么Safari不接受GZIP压缩?

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

在Chrome上,它工作得很好。 400K下去压缩到100k左右:

first

second

在Safari上压缩不起作用:

third

fourth

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


注:我已经在Safari中存在的GZIP,臭虫,文件不能的“广州”结束或Safari不会接受GZIP读了。由于我的文件不会以.gz结尾,因此这个问题不应该成为问题。

+0

您在safari上获得的请求标题表示内容为GZIP,其长度为119406字节。你确定你使用的工具告诉你事实真相吗? – nos

+0

@nos这是相同的工具。我只是使用两个浏览器内置的Web检查器。 – Timo

+0

@nos你说得对。 Wireshark清楚地显示该文件比原始大小小很多。如果你想发表你的评论作为答案,我很乐意将其标记为“正确的答案”。 – Timo

回答

7

发送到Safari的HTTP标头声称它是压缩的(它具有Content-Encoding:gzip标头,它表示内容长度为119406字节) - 我相信那些比粗体数字更多的词430.61在Web Inspector中。它如何确定顶栏中的这两个数字,我不知道。

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

9

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

  • 编码=未压缩的文件大小,从服务器
  • 解码=未压缩的文件大小,局部地
  • 转移=未压缩文件大小+报头的发送和接收
  • 的Content-Length =压缩文件发送,从服务器

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

1

这是一段时间以前,但我只是遇到了一个非常类似的问题,或者可能是这个问题的根源。当你用gzip压缩的数据对于Safari浏览器这样的:

gzip jquery.min.js 

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

如果编码gzip文件是这样的:

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

然后,你将有一个文件,该文件是几个字节较小,不会在Safari工作得很好。