这是一个奇怪的。我正在现场服务器上慢慢重建一个网站。该站点的某些部分已经重建,因此代码放在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
答案 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会抛出压缩。