Apache mod deflate не сжимает вывод php
У меня есть mod_deflate и работает. Я могу добавить что-то файл.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, который отправил меня по неверному пути.
3 ответа
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