Вопрос: Дефлектор Apache mod не сжимает php-выход


У меня есть mod_deflate и работает. Я могу загрузить файл something.txt на моем сервере apache и использовать завиток, чтобы проверить его.

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, который отправил меня по неверному пути.


5
2017-11-14 23:33


Источник


php - приложение / x-httpd-php не приложение / json - yoonix
в php i фактически задал заголовок application / json и подтвердил, что он пришел как таковой. Я полагаю, что он слушает заголовок, который я установил. - Erik-Jan Riemers
проверьте расширение php в своей конфигурации, у вас есть что-то вроде AddOutputFilter (.... things ...) php? - regilero


Ответы:


AddOutputFilterByType является устаревшим способом добавления элементов в цепочку выходных фильтров (здесь ) .:

Еще одна директива AddOutputFilterByType по-прежнему поддерживается, но   может быть проблематичным и теперь не рекомендуется. Использовать динамическую конфигурацию   вместо.

И у вас могут быть некоторые проблемы, потому что PHP связан с одной цепочкой фильтров, которая не содержит фильтр DEFLATE.

Вы можете попытаться использовать новый синтаксис mod_filter с FilterChain как показано в этом вопросе (в вопросе, а не в ответах).


4
2017-11-15 13:12



Я добавил это в файл .htaccess, и теперь я получил «Content-Encoding: gzip». Благодаря! Трудная находка, поскольку весь интернет заполнен выходными фильтрами и т. Д. - Erik-Jan Riemers
Не связано с исходным вопросом, но с помощью инструмента тестирования загрузки, такого как «осада» или «ab» из apache, не получается сжатый файл, даже если он поддерживает gzip. - Erik-Jan Riemers
@ Erik-JanRiemers: не забудьте снова встать на вопрос Op о переполнении стека. - regilero


У меня была эта проблема, и я обнаружил, что настройка параметров mod_deflate в .htaccess vs. httpd.conf привела к разным результатам. Параметры httpd.conf работали на PHP при работе в fastcgi или DSO. В файле .htaccess PHP, работающий под управлением fastcgi, не может проверять директивы deflate.

Поэтому попробуйте написать правила в своем httpd.conf вместо .htaccess и посмотреть, разрешает ли это ваша проблема (не забудьте перезапустить Apache после внесения изменений).


2
2017-11-15 00:44



Я попробовал как .htaccess, так и файл /etc/apache2/mods-enabled/deflate.conf, но не повезло. Я перезапустился между ними. Я мог бы попробовать попробовать fastcgi. Почти наверняка это проблема php <-> apache, так как все остальные файлы apache gzip просто прекрасны. - Erik-Jan Riemers
С deflate.conf вы могли протестировать показ сжатия, работающего для других файлов, отличных от PHP? Если нет, у вас есть оператор include в вашем httpd.conf? то есть. Include /etc/apache2/mods-enabled/deflate.conf Просто хочу исключить эти возможности. В противном случае мне интересно, можете ли вы протестировать с помощью mod_php vs. fast-cgi, чтобы узнать, есть ли у вас разные результаты. - VogonPoetLaureate
Как показано в моем OP, я проверил с curl, чтобы показать, что другие файлы действительно сжаты. Мне нужно проверить другие параметры php и посмотреть, что они делают. - Erik-Jan Riemers


Попробуйте это и посмотрите, работает ли оно для вас:

AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp

0
2017-11-15 05:05



Я добавил эти строки в .htaccess и deflate.conf в качестве теста, но не помог. Выход по-прежнему не говорит, что у него есть gzip. - Erik-Jan Riemers