У меня установлен и запущен mod_deflate. Я могу добавить файл something.txt на свой сервер apache и использовать curl, чтобы проверить его.
curl --compressed -I /somefile.txt возвращает мне следующее, хорошее и сжатое:
Vary: Accept-Encoding
Content-Encoding: gzip
Но если я использую /some.php, я вернусь:
Accept-Ranges: bytes
X-Powered-By: PHP/5.4.4-14+deb7u5
Но нет Content-Encoding: gzip, .htaccess, который я использовал с несколькими опциями:
SetOutPutFilter DEFLATE
Или
AddOutputFilterByType DEFLATE application/json
Я также проверил, отключено ли сжатие zlib в php.ini, а также попытался отключить выходной буфер. Но что бы я ни пытался, мне никогда не удается сжать вывод php с помощью apache. Накладные расходы от apache до zip меньше, чем при использовании php zlib.
Я вижу достаточно сообщений вроде Сжатие вывода Apache работает для CSS / JS, но не для PHP но это позволяет сжатие из php. Я хочу, чтобы Apache справился с этим.
Я, должно быть, упустил здесь что-то глупое.
ОБНОВИТЬ: Я решил все вопросы, в том числе благодаря полученным ответам. В конце концов, это все равно не сработало на 100%. Это произошло из-за того, что установлен неправильный пакет. Был использован apache2filter, который отправил меня по неправильному пути.
AddOutputFilterByType
- устаревший способ добавления элементов в цепочку выходных фильтров (ссылка здесь ) .:
Еще одна директива AddOutputFilterByType все еще поддерживается, но может вызывать проблемы и теперь устарела. Вместо этого используйте динамическую конфигурацию.
И у вас могут возникнуть проблемы, потому что PHP связан с одной цепочкой фильтров, которая не содержит фильтр DEFLATE.
Вы можете попробовать использовать новый синтаксис mod_filter с участием FilterChain как показано в этом вопросе (в вопросе, а не в ответах).
У меня была эта проблема, и в итоге я обнаружил, что установка параметров mod_deflate в .htaccess и httpd.conf приводит к разным результатам. Настройки httpd.conf работали для PHP при запуске в fastcgi или как DSO. В файле .htaccess PHP, работающий как fastcgi, не смог обработать директивы deflate.
Поэтому попробуйте написать правила в httpd.conf вместо .htaccess и посмотрите, решит ли это вашу проблему (не забудьте перезапустить Apache после внесения изменений).
Попробуйте это и посмотрите, работает ли это для вас:
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp