cyrax_02 29 октября 2015 2 9
В настройках php gzip-сжатие отключено — проверил через phpinfo:
zlib.output_compression	Off	Off
zlib.output_compression_level	-1	-1
zlib.output_handler	no value	no value

Тем не менее, браузеры получают все файлы в сжатом виде. И вот, не могу найти, кто и где включает это сжатие…
В настройках apache никаких директив не обнаружил. nginx не установлен. Логично предположить, что это modx на лету включает сжатие, если в системе установлено расширение zlib (установлено). Но в настройках modx не нашёл соответствующих настроек. Может, modx включает сжатие в безусловном порядке — без всяких настроек?

В корневом .htaccess (который в комплекте с modx) сжатие не включено (закомментировано):
#php_flag zlib.output_compression On
#php_value zlib.output_compression_level 5
9 комментариев
Fi1osof1
Fi1osof 29 октября 2015г в 22:09 #
Вопрос: а что это за скрипты? Логично предположить, что это те, которые получаются в случае, если сжатие скриптов включено (настройка compress_js), и это работает только для бэкэнда. Если эта настройка отключена, то сжатие всех скриптов должно быть только на совести самого сервера.
c
cyrax_02 29 октября 2015г в 23:32 #
Не понимаю, о каких скриптах речь, но compress_js — да, отвечает только за сжатие скриптов в админке (при этом настройка manager_js_zlib_output_compression отвечает за использование php-модуля zlib для этого самого сжатия).
Что касается сжатия html и статики, отдаваемой клиенту (не минификации/обфускации, а именно gzip-запаковки ), то да — никаких других настроек в modx нет (например, отвечающих за сжатие отдаваемого html). И это логично, т.к. в общем случае сжатию должны подвергаться не только html, но и внешние (отдельно подключаемые) стили со скриптами и некоторые прочие форматы данных — за них modx не отвечает.
G
Ganaman 29 октября 2015г в 23:20 #
Сжимает веб сервер. Лично у меня за это отвечает модуль индейца под названием deflate. Посмотрите включён ли у вас этот модуль. Отключите, перезагрузите apache. Вообще-то странное желание добровольно снизить производительность своего сайта. Несжатые файлы как вы понимаете будут гораздо большего размера.
c
cyrax_02 29 октября 2015г в 23:46 #
Лично у меня за это отвечает модуль индейца под названием deflate. Посмотрите включён ли у вас этот модуль.
Модуль «deflate_module» у меня подключен. Поскольку нигде в настройках Apache директив AddOutputFilterByType и SetOutputFilter нет, будем считать, что этот модуль при подключении автоматически включает gzip-сжатие с «умолчательными» настройками. А именно:
— gzip-сжатие html, js, css (в т.ч.)
— при этом для html заголовок Content-Encoding: «gzip» отдаёт, для js и css — нет (впрочем, gismeteo.ru и yastatic.net для js и css почему-то тоже не отдают)

Отключите, перезагрузите apache. Вообще-то странное желание добровольно снизить производительность своего сайта. Несжатые файлы как вы понимаете будут гораздо большего размера.
Так я не хочу отключать сжатие, я всего лишь хочу взять его под собственный контроль, прописать директивы руками. А если кто-то где-то сжимает, нужно знать кто, где и с какими параметрами это делает…
G
Ganaman 29 октября 2015г в 23:58 #
Я не знаю под какой ОС вы находитесь, но в случае с убунту выглядит это так. В /etc/apache2/mods-available находятся все модули доступные apache. В /etc/apache2/mods-enabled модули которые подключены у вас на данный момент. Конфиг модуля можно посмотреть здесь /etc/apache2/mods-enabled/deflate.conf.
Выглядит он так
<IfModule mod_deflate.c>
	<IfModule mod_filter.c>
		# these are known to be safe with MSIE 6
		AddOutputFilterByType DEFLATE text/html text/plain text/xml

		# everything else may cause problems with MSIE 6
		AddOutputFilterByType DEFLATE text/css
		AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
		AddOutputFilterByType DEFLATE application/rss+xml
		AddOutputFilterByType DEFLATE application/xml
	</IfModule>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
c
cyrax_02 30 октября 2015г в 16:57 #
У меня (Debian) /etc/apache2/mods-enabled/deflate.conf чуть проще:
<IfModule mod_deflate.c>
          # these are known to be safe with MSIE 6
          AddOutputFilterByType DEFLATE text/html text/plain text/xml

          # everything else may cause problems with MSIE 6
          AddOutputFilterByType DEFLATE text/css
          AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
          AddOutputFilterByType DEFLATE application/rss+xml
</IfModule>


Так или иначе, этот конфиг — то, что я искал. Именно он и работает.
Только не ясно, почему заголовок Content-Encoding: «gzip» не отдаётся для css и js (для html — отдаётся)…
G
Ganaman 30 октября 2015г в 17:57 #
Да всё отдаётся. Просто вы пытаетесь настроить то, что и так работает и в чём как мне кажется слабо разбираетесь.
Примеры html, css, js

[IMG]http://www.picshare.ru/uploads/151030/MQ6g6LWBs1.jpg[/IMG]

[IMG]http://www.picshare.ru/uploads/151030/B19b33cjrp.jpg[/IMG]

[IMG]http://www.picshare.ru/uploads/151030/G3ldbZmy08.jpg[/IMG]
c
cyrax_02 30 октября 2015г в 19:24 #
Не стоит переходить на личности. Не красиво. Что касается заголовка Content-Encoding: «gzip», то он действительно не передавался. И не передавался из-за того, что ответ был не 200-м, а 304-м (обновил страницу без ctrl). Логично. Но вводит в заблуждение тот факт, что браузер для этого самого 304-го ответа не ставит прочерк в поле «Передано» (для 304-х картинок — прочерк ставит). Вместо этого указывает сжатый размер, как будто content физически передавался:

jquery.min.jswww.picshare.ru/view/6851629/
c
cyrax_02 30 октября 2015г в 19:41 #
Вот в чём дело. Директива AddOutputFilterByType с версии Apache 2.1 (как только появился mod_filter) — приобрела статус deprecated. А с версии 2.3.7 переезжает из ядра в модуль mod_filter.

Именно поэтому в вышеприведённом примере файла конфигурации модуля «deflate.conf» (первый пример для Ubuntu) дополнительно выполняется проверка загрузки модуля modx_filter.

P.S. Вместо директивы AddOutputFilterByType также можно использовать более универсальный вариант на основе директивы FilterChain. Вот примеры: пример1, пример2.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.