Назад | Перейти на главную страницу

Контент не сжимается, хотя я использую zlib в php.ini

Я отредактировал свой файл php.ini, чтобы в нем были следующие две записи:

zlib.output_compression = On
zlib.output_compression_level = 4

Однако после перезапуска apache, когда я запрашиваю страницы php, заголовки, возвращаемые в ответе, показывают, что мой сервер по-прежнему НЕ обслуживает сжатые страницы (здесь указаны выбранные заголовки, просматриваемые с помощью функции сети Chrome):

Cache-Control:no-cache, must-revalidate, max-age=0
Connection:Keep-Alive
Content-Type:text/html; charset=UTF-8
Date:Mon, 17 Sep 2012 23:46:13 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified:Mon, 17 Sep 2012 23:46:13 GMT
Pragma:no-cache
Proxy-Connection:Keep-Alive
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.17
Transfer-Encoding:chunked
Via:1.1 XXX-PRXY-07
X-Powered-By:PHP/5.2.17

Что я делаю не так? Есть ли другие настройки, которые мне нужно изменить?

РЕДАКТИРОВАТЬ

Вот еще один набор заголовков, возвращенных на другой компьютер:

Cache-Control:no-cache, must-revalidate, max-age=0
Connection:close
Content-Type:text/html; charset=UTF-8
Date:Thu, 20 Sep 2012 09:45:26 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified:Thu, 20 Sep 2012 09:45:26 GMT
Pragma:no-cache
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.17
Transfer-Encoding:chunked
Vary:Cookie
X-Powered-By:PHP/5.2.17

Похоже, трафик проксируется. Убедитесь, что прокси-сервер может обрабатывать сжатый трафик и по какой-то причине не распаковывает его.

Если клиент (в данном случае прокси, но во многих случаях браузер конечного пользователя) не поддерживает используемое сжатие, трафик не будет сжиматься.

Я также заметил, что ни mod_zlib, ни mod_deflate не загружаются. Возможно, вам потребуется проверить, что модуль работает и настроен (возможно, вам придется добавить параметр определения для запуска apache или включить файл конфигурации).

Либо ваш файл php.ini не читается, либо ваш модуль zlib не загружен. Также убедитесь, что output_handler не установлен. Если вам нужно использовать обработчик вывода с gzip-выводом, используйте zlib.output_handler вместо.

Первое, что нужно сделать, это убедиться, что PHP знает о zlib и изменениях вашей конфигурации. Создайте файл с именем test.php и поместите в него следующее.

<?php phpinfo(); ?>

Теперь откройте эту страницу в своем браузере. Что говорит таблица для раздела zlib? Это должно выглядеть так, и если это так, ваша страница должна обслуживаться с кодировкой содержимого gzip. Если вы не видите раздел zlib, возможно, вам потребуется добавить директиву в php.ini для загрузки модуля.

Также проверьте раздел Core на странице, чтобы убедиться, что output_handler установлен на неважно.