我在我的网站上启用了 gzip 压缩,并使用以下工具进行了测试:

不过,Firefox 及其所有扩展(Firebug、Yslow 和 Google Page Speed)表示它们接收非压缩内容。

text/html 由 php 的 ob_gzhandler 压缩,它也关心 headers。

我不使用代理。

我究竟做错了什么?

有帮助吗?

解决方案

这并不是您所期望的答案,但是您是否尝试过不使用 PHP 而是使用 Apache 来压缩数据?

这可以使用 mod_deflate.

有几件事:

  • 这意味着 PHP 的计算量会减少
  • 这也意味着 (这是最好的部分 ;-) ) 您的 CSS/JS 文件可以压缩为 ;考虑到它们的大小,现在压缩它们可能不是一件坏事......


作为旁注:为了帮助我们找出 PHP 压缩出现的问题,您能否提供更多信息?就像您网站的网址一样 (如果是公开的), 和一些代码?


编辑现在我们有了 URL : http://ego.pestaa.hu/

当我进入该页面时,响应的标题如下:

HTTP/1.x 200 OK
Date: Sat, 01 Aug 2009 21:53:37 GMT
Server: Apache
X-Powered-By: PHP/5.2.6
**Content-Encoding: gzip**
Vary: Accept-Encoding
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

(使用带有 LiveHTTPHeaders 扩展的 Firefox 3.5)

您指定的三个测试站点也表示您的页面已被压缩。
你发现问题出在哪里了吗?

您确定这不是来自您的浏览器的内容,它不会在请求中发送以下标头:

Accept-Encoding: gzip,deflate

在其他答案后编辑

引用评论:

问题的来源可能不是我的网站,而是我的ISP/浏览器/路由器。其中一个可以在每个组件达到内部流程之前对其进行解压缩。

哦,如果问题不是你的网站,我想我完全误解了这个问题 - 对此感到抱歉:-( 我以为你不知道如何从你的网站服务器 gzip 压缩内容。
顺便说一句,我想我不是唯一一个

如果问题与您网站的配置无关,那么有两种可能性:

  • 也许是firefox配置错误?如果你去 about:config, ,什么是 network.http.accept-encoding 说 ?对我来说,它是 gzip,deflate
  • 如果问题出在你的 ISP 或类似的地方,那么任何人都无能为力......

其他提示

尝试一下 实时 Http 标头 Firefox 插件以及其他插件。它会打开一个窗口,显示来回时的确切请求/响应标头,因此您毫无疑问地知道接受编码和响应编码是什么。

您是否尝试过在 Apache/您的 Web 服务器中启用 gzip?

  • 您确定正在使用 Firefox 扩展测试相同的 URL 吗?
    • 在 PHP 中使用 ob_gzhandler 会压缩 PHP 页面的输出,但 YSlow 和其他人也会警告您有关未压缩的 css/javascript 文件的信息。
  • 检查浏览器是否发送正确的标头。浏览器通常发送“Accept-encoding:gzip”标头告诉脚本/网络服务器它接受压缩内容。测试脚本肯定会发送该信息,但您的浏览器可能不会。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top