1

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

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

网页压缩?是的

压缩类型?压缩包

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

压缩大小(字节) 4,427

压缩 % 75.8

----

响应标头

状态 HTTP/1.0 200 OK

pragma no-cache cache-control private, max-age=86500

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

x-amz-acl 公开阅读

内容类型文本/css

内容-md5 hqJaTBS3OzDFet/QHsd+ Qg==

内容编码 gzip

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

服务器——我的服务器——

内容长度 4427

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

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

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

4

2 回答 2

4

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

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

于 2009-08-19T05:37:18.857 回答
0

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

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

标签无效

内容编码:gzip\n

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

于 2009-09-10T13:48:28.260 回答