Почему сжатие gzip не работает? - PullRequest
0 голосов
/ 24 февраля 2010

Это странный. Я медленно перестраиваю сайт на живом сервере. Некоторые разделы сайта были перестроены, и поэтому код размещен в подкаталоге домашнего каталога (например: / 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 ]

1 голос
/ 24 февраля 2010

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');
0 голосов
/ 24 февраля 2010

Обнаружил проблему, не уверен, документирован ли где-нибудь ...

Если вы используете ob_start ("ob_gzhandler"); а вам что для очистки вашего контента, вы должны использовать ob_flush (), а не flush (). Использование flush выбросит сжатие.

...