6

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

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

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

第一的

第二

但是在 Safari 上压缩不起作用:

第三

第四

有趣的是,在 gz2b.png 中,您可以清楚地看到 content-encoding 设置为“gzip”。


注意:我已经阅读了 Safari 中的一个 GZIP 错误,其中文件不能以“.gz”结尾,否则 Safari 将不接受 GZIP。由于我的文件没有以 .gz 结尾,所以这个问题应该不是问题。

4

3 回答 3

10

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

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

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

于 2014-02-21T19:39:37.090 回答
8

发送到 Safari 的 HTTP 标头说它是压缩的(它有 Content-Encoding: gzip 标头,它说 Content-Length 是 119406 字节) - 我相信那些比Web Inspector 中的粗体数字430.61更重要。我不知道它如何确定顶栏中的这两个数字。

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

于 2012-09-11T13:09:19.863 回答
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 上完美运行。

于 2015-08-23T16:45:50.980 回答