Это странный. Я медленно перестраиваю сайт на живом сервере. Некоторые разделы сайта были перестроены, и поэтому код размещен в подкаталоге домашнего каталога (например: / 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
http://docs.php.net/ob_gzhandler говорит:
Перед тем, как ob_gzhandler () действительно отправит сжатые данные, он определяет, какой тип кодировки контента будет принимать браузер ("gzip", "deflate" или вообще ничего) и вернется соответственно вывод.
edit: Вы можете проверить это с чем-то вроде
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');
Обнаружил проблему, не уверен, документирован ли где-нибудь ...
Если вы используете ob_start ("ob_gzhandler"); а вам что для очистки вашего контента, вы должны использовать ob_flush (), а не flush (). Использование flush выбросит сжатие.