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
Другие вопросы по тегам