Вступление
Mod_deflate - это модуль Apache, который позволяет сжимать выходные данные с вашего веб-сервера перед отправкой клиенту. Как только размер содержимого вашего сайта сжимается, его размер уменьшается, и клиенты могут загружать его быстрее. Это полезно не только для клиентов с более низкой пропускной способностью, но также учитывается поисковыми системами при оценке эффективности вашего сайта и рейтинга страницы.
В дополнение к сжатию контента, mod_deflate также может быть использован для распаковки. Этот метод будет применим, если вы используете Apache в качестве обратного прокси-сервера и хотите дополнительно обрабатывать контент, проходящий через прокси-сервер. Однако эта техника имеет очень ограниченное применение. Мы сосредоточим внимание на статье об использовании mod_deflate для сжатия.
Предпосылки
Это руководство было протестировано на CentOS 7. Установка и настройка модуля не зависит от ОС или версии ОС, но расположение файлов конфигурации может различаться в разных ОС и их версиях.
Также предполагается, что вы используете Apache 2.4.0 или выше. Чтобы установить Apache, пожалуйста, следуйте Шагу 1 из How To Установите стек Linux, Apache, MySQL, PHP (LAMP) на CentOS.
Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для этой команды требуется root-доступ, ему будет предшествовать + sudo +
. Если у вас его еще нет, следуйте этому руководству: Initial Server Setup на CentOS 7.
Монтаж
Mod_deflate включен и включен в установку Apache по умолчанию на CentOS 7. Чтобы подтвердить это, запустите + apachectl +
, интерфейс управления сервером Apache и отфильтруйте вывод с помощью + grep +
для ключевого слова + deflate +
следующим образом:
apachectl -t -D DUMP_MODULES |grep deflate
Вы должны увидеть + deflate_module (shared) +
, если mod_deflate установлен и включен. Если вы этого не видите, выполните следующие действия по устранению неполадок:
-
Убедитесь, что файл модуля установлен. Этот файл является частью основного пакета
+ httpd +
, который вы уже должны были установить в соответствии с ранее упомянутыми предварительными условиями. По умолчанию он находится в+ / etc / httpd / modules / mod_deflate.so +
. Кроме того, веб-сервер должен иметь возможность открыть этот файл. Для этой цели+ mod_deflate.so +
должен иметь права на чтение для всего мира, например 755. -
Проверьте, загружен ли модуль. Откройте файл конфигурации базовых модулей Apache
+ / etc / httpd / conf.modules.d / 00-base.conf +
и убедитесь, что эта строка присутствует и не закомментирована:
LoadModule deflate_module modules/mod_deflate.so
конфигурация
Чтобы начать использовать mod_deflate, вы должны указать, какие типы файлов должны быть сжаты. С одной стороны, форматы простого текста могут быть значительно уменьшены в размере путем сжатия, и поэтому имеет смысл применять его к файлам HTML, CSS или JavaScript. С другой стороны, многие мультимедийные форматы, такие как Flash и изображения, уже содержат сжатие, и дополнительное сжатие будет бесполезным.
Чтобы настроить mod_deflate, создайте новый файл конфигурации + / etc / httpd / conf.d / mod_deflate.conf +
с примером кода:
/etc/httpd/conf.d/mod_deflate.conf
<filesMatch "\.(js|html|css)$">
SetOutputFilter DEFLATE
</filesMatch>
Приведенный выше код означает, что когда файл соответствует расширениям + .js +
, + .html
или` + .css or`, он будет сжат (дефлирован) посредством стандартной директивы Apache + SetOutputFilter
. Вы можете добавить другие подобные расширения текстовых файлов, найденные на вашем сайте, такие как + .txt +
.
Кроме того, у mod_deflate есть несколько важных параметров конфигурации:
-
+ DeflateCompressionLevel +
- уровень сжатия, который будет применен. По умолчанию этот уровень равен 9, самый высокий уровень сжатия. 1 - наименьший уровень сжатия. Более высокое сжатие дает наименьший выход за счет более высокой загрузки ЦП сервера. -
+ DeflateMemLevel +
- объем памяти, которую zlib, библиотека сжатия, может использовать. Значение по умолчанию 9, что также является самым высоким значением. Чтобы точно рассчитать разрешенную память, вы должны умножить значение+ DeflateMemLevel +
на 16K. -
+ DeflateWindowSize +
- размер окна сжатия. По умолчанию это максимально возможное значение 15. Более высокое число означает более высокий уровень сжатия, опять же за счет большего количества ресурсов сервера.
В большинстве случаев вы можете оставить вышеуказанные значения по умолчанию. Однако, если вы подозреваете, что производительность вашего сервера значительно ухудшилась после использования mod_deflate, вы настраиваете более низкие значения в файле конфигурации + / etc / httpd / conf.d / mod_deflate.conf +
следующим образом:
DeflateCompressionLevel 1
Вышеуказанное снизит уровень сжатия, что приведет к увеличению файлов. Тем не менее, mod_deflate будет использовать меньше CPU таким образом. Обязательно перезапустите Apache, если вы решите применить любые такие изменения.
тестирование
Существуют различные способы тестирования mod_deflate, но самый простой - использовать wget, неинтерактивный сетевой загрузчик. Если у вас его еще нет в CentOS 7 Droplet, вы можете установить его с помощью команды + sudo yum install -y wget +
.
Для теста вам понадобится текстовый файл размером не менее нескольких сотен килобайт, который при сжатии должен уменьшиться. Если у вас нет такого файла под рукой, вы можете скачать JQuery, которая является популярной библиотекой JavaScript, и загрузить ее на свой сайт. Если вы не уверены, куда поместить файл, вы можете просто загрузить его в корневой каталог документов Apache, который в CentOS 7 называется + / var / www / html / +
. Таким образом, файл будет доступен в корневом каталоге вашего сайта по умолчанию.
Как только пример тестового файла будет загружен на ваш сайт, загрузите его с помощью + wget +
. Вы можете выполнить этот тест либо с локального компьютера, либо с Droplet. как это:
wget --header="Accept-Encoding: gzip" http://<your_server_ip>/jquery-1.11.3.js
В приведенном выше примере вы загружаете файл + jquery-1.11.3.js
с вашего сервера Apache. Чтобы использовать сжатие, мы передаем дополнительный аргумент заголовка + wget +
+ Accept-Encoding: gzip +
.
При загрузке описанным выше способом файл + jquery-1.11.3.js +
должен иметь размер 83 КБ. На самом деле, это не совсем тот же исходный файл JavaScript, и он должен быть дополнительно извлечен клиентом, что также вызывает некоторые накладные расходы на стороне клиента. Однако размер передаваемого по сети будет всего 83 КБ, что более чем в три раза меньше исходного файла (278 КБ).
Вы можете сначала подтвердить приведенный выше расчет, проверив размер загруженного файла с помощью команды Linux для вывода содержимого каталога + ls +
следующим образом:
ls -lah jquery-1.11.3.js
-rw-r--r-- 1 user user 83K Apr 28 12:20 jquery-1.11.3.js
Затем вы можете снова сравнить результат с исходным файлом на вашем сайте с помощью команды + ls +
:
ls -lah /var/www/html/jquery-1.11.3.js
-rw-r--r-- 1 apache apache 278K Apr 28 12:20 /var/www/html/jquery-1.11.3.js
Заключение
Как вы видели из этой статьи и примера из реальной жизни с библиотекой JQuery, Mod_deflate может помочь вам значительно снизить пропускную способность для вашего сайта. Чтобы продолжить оптимизацию вашего сайта, прочитайте о Apache content cache, которое следующий логический шаг после включения mod_deflate.