Сжатие ответа веб-сервера

В этой статье рассматривается набор патчей для 2-го поколения Apache – mod_deflate. Он считается отличной заменой для mod_gzip, который использовался в Apache 1.3.xx.

Почему mod_deflate?

Выбор в пользу mod_deflate, прежде всего, обусловлен тем, что применение PHP-плагинов способствует значительному повышению расходования ресурсов системы. В такой ситуации не целесообразно использовать mod_rewrite, который отдает сжатые файлы вместо запрошенных несжатых. А вот mod_deflate не имеет такого недостатка. К тому же он отличается простотой настройки и прекрасным соотношением скорости и качества функционирования. При этом mod_deflate также отличается и хорошим «аппетитом» к ресурсам веб-сервера.

Предварительный анализ

Во время предварительного анализа сайта посредством инструмента Page Speed от Google тест GZIP Compression, как правило, завершается с неудовлетворительным итогом. Все JS-скрипты и файлы CSS возвращаются в несжатом состоянии:

На этом скриншоте стоит обратить внимание на style.css. Он передается в несжатом формате, так как заголовки, указывающие на размер файла до и после передачи имеют одинаковые значения. Об этом свидетельствует и отсутствие Content-Encoding. Во всех остальных файлах CSS зафиксирована точно такая же ситуация.

Установка и запуск модуля

Для обеспечения сжатия всех JS-скриптов и файлов CSS следует вставить в файл .htaccess, расположенный в корневом каталоге интернет-портала, или в файл httpd.conf/vhost.conf, следующий текст:

Этот фрагмент выполняет проверку mod_deflate. В том случае, если он доступен, происходит сжатие JS-скриптов и файлов CSS. Кроме того, данный фрагмент выполняет проверку наличия mod_setenvif. В случае его доступности, происходит изменение настроек сжатия для браузеров, для которых характерна некорректная обработка сжатых файлов. Если на хостинге отсутствует HTTP-акселератор, потребуется добавление еще одной директивы. То же самое нужно сделать, если не происходит сжатие HTML-страниц.

В некоторых инструкциях предлагаются другие варианты сжатия. Например, возможно сжатие всех объектов за исключением тех, для которых эта процедура будет бессмысленна. Примером такого объекта являются медиафайлы, картинки, архивы и т.д. В данной ситуации рекомендуется заменить строки 2-4 таким текстом:

Этот фрагмент обеспечивает сжатие всех объектов. Если же используется mod_setenvif, предотвращается возможность сжатия архивов, а также изображений, видео- и аудифайлов. Стоит добавить, что такой подход нецелесообразен ввиду того, что он может коснуться больше объектов, чем изначально требовалось.

Отдельно стоит сказать о директивах, которые используются в целях тонкой настройки mod_deflate. Они доступны лишь в файле VirtualHost. При этом данные директивы не предназначены для применения в более распространенном.htaccess. В данном случае произойдет «ошибка 500». Однако относительно недоступности тонкой настройки не нужно особо переживать, так как представленных директив вполне хватит для большей части современных интернет-порталов.

Повторный анализ сайта

Сразу же после установки модуля GZIP Compression сообщает о положительном итоге. Все JS скрипты и файлы CSS отдаются уже сжатыми.

В этом фрагменте сразу же заметно уменьшение величины заголовков, указывающих размер тела объектов, отправленных получателю. Этот показатель был уменьшен в 3 раза. Кроме того, в результатах теста появилась строка Content-Encoding, свидетельствующая о сжатие файла посредством gzip. Стоит добавить, что все остальные JS-скрипты и файлы CSS также были успешно сжаты.

Выводы

Разработчикам, которые работают со 2-м поколениям Apache, стоит обязательно обратить внимание на mod_deflate. Этот модуль обеспечивает беспроблемное сжатие объема генерируемого трафика в более чем 3 раза. За счет такой возможности обеспечивается существенное увеличение скорости отображения сайта в любом браузере.

Теги:
php 
0

Оставить своё мнение

Ваш e-mail не будет опубликован. Обязательные поля помечены *