【问题标题】:Reasons why gzipped content might not be grokked by the browser浏览器可能无法识别 gzip 压缩内容的原因
【发布时间】:2010-11-20 20:04:39
【问题描述】:

出于性能原因,我正在尝试将静态资源(css 和 javascript)作为缓存的 gzip 文件提供。

页面在渲染时看起来是 gzip 的,Content-Encoding 根据 LiveHTTPHeaders 正确设置为 gzip,最重要的是,gzip 压缩的内容通过 GIDZipTest 页面 (http://www.gidnetwork.com/tools/gzip-test.php) 很好。以下是测试输出的示例:

网页压缩?是的

压缩类型?压缩包

大小,标记(字节)18,286

压缩后的大小(字节)4,427

压缩% 75.8

----

ResponseHeaders

状态 HTTP/1.0 200 正常

pragma no-cache 缓存控制 私人的,最大年龄=86500

将于 2009 年 8 月 24 日星期一 04:34:14 GMT 到期

x-amz-acl 公开阅读

内容类型文本/css

content-md5 hqJaTBS3OzDFet/QHsd+ Qg==

内容编码 gzip

日期 2009 年 8 月 19 日星期三 04:34:14 GMT

服务器 -- 我的服务器 --

内容长度 4427

内容编码标头为粗体,其他所有标头均符合预期。

测试页面还显示了未压缩的页面源,它​​总是和我期望的完全一样,它是未压缩的,我什至尝试复制并粘贴它以由浏览器呈现,它可以工作,所以问题必须在识别页面被压缩并解压缩的实际步骤中。

这不是特定于浏览器的。在 FF、Webkit 和 IE 中,这些 gzip 压缩文件未正确解压缩。我已经尝试了我能想到的一切,但我真的很难过。

【问题讨论】:

  • 缓存的 gzip 文件到底是什么意思?

标签: performance http browser gzip content-encoding


【解决方案1】:

也许你有别的东西 gzip 文件第二次,但仅限于 http 1.1 客户端,在接受编码中列出它,就像大多数浏览器一样。 GIDZipTest 正在发送 http 1.0 请求,并且 gzip 到 1.0 客户端是有风险的,因为 http 1.0 没有一个接受编码字段供客户端指示它们支持哪些编码,因此对于第二个压缩器是有意义的(如果有一个) 不 gzip 到 1.0 客户端。如果是这种情况,GIDZipTest 会得到一个单压缩响应,而浏览器会得到一个双压缩(坏)响应。但这只是一种可能性。很少见,但它会发生。

如果不是这样,您真的应该提供更多信息,例如显示问题的页面的 url。

【讨论】:

  • 你是对的,我使用的是 Google App Engine,但不知道它会自动压缩,所以通过 gzip 压缩我对文件进行了双重压缩。
【解决方案2】:

在过去的几天里,我调试了一个类似的问题。我项目中的所有 html、css 和 js 文件都是 gzip 文件。在 Firefox 3.5 出现之前,它运行良好。 Firefox 3.0 和 IE 7+8 没有任何问题。哦,Opera 9+10 和 Chrome 也被编码阻塞了。

症状是正确识别html和css文件,只有js文件有问题。 Firebug 给了我这个错误信息:

标签无效

内容编码:gzip\n

我的解决方案是删除文档类型。我尝试过宽松和严格,但都不起作用。但我想知道正确的文档类型是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多