为什么gzip压缩无法正常工作?

时间:2010-02-24 09:13:14

标签: php apache compression gzip

这是一个奇怪的。我正在现场服务器上慢慢重建一个网站。该站点的某些部分已经重建,因此代码放在home目录的子目录中(即:/ mysite / newcode)。

我使用ob_start(“ob_gzhandler”)成功地压缩了旧网站;所以,我已经为新代码应用了完全相同的代码。但是,由于一些奇怪的原因,它的返回不是gzipped。我已查看http://www.whatsmyip.org/http_compression/http://www.gidnetwork.com/tools/gzip-test.php。我不太明白为什么如果将gzip处理程序作为旧代码和新代码的第一行(在任何输出之前)之一包含在内,它就不会对新代码进行压缩。

PHP 5.1.6 Apache 2.0 Centos 5

2 个答案:

答案 0 :(得分:1)

http://docs.php.net/ob_gzhandler说:

在ob_gzhandler()实际发送压缩数据之前,它确定浏览器将接受哪种类型的内容编码(“gzip”,“deflate”或根本没有)并将相应地返回其输出。
这可能是您的问题的原因吗?

编辑:您可以使用类似

的内容进行测试
function dbg_ob_gzhandler($buffer, $mode) {
  error_log('dbg_ob_gzhandler invoked');
  $rv = ob_gzhandler($buffer, $mode);
  if ( false===$rv ) {
    error_log('client does not support compressed content');
  }
  return $rv;
}
ob_start('dbg_ob_gzhandler');

答案 1 :(得分:0)

发现问题,不确定是否记录在任何地方......

如果你使用ob_start(“ob_gzhandler”);如果要刷新内容,必须使用ob_flush(),而不是flush()。使用flush会抛出压缩。