Как установить и настроить mod_deflate на CentOS 7

Вступление

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 установлен и включен. Если вы этого не видите, выполните следующие действия по устранению неполадок:

  1. Убедитесь, что файл модуля установлен. Этот файл является частью основного пакета + httpd +, который вы уже должны были установить в соответствии с ранее упомянутыми предварительными условиями. По умолчанию он находится в + / etc / httpd / modules / mod_deflate.so +. Кроме того, веб-сервер должен иметь возможность открыть этот файл. Для этой цели + mod_deflate.so + должен иметь права на чтение для всего мира, например 755.

  2. Проверьте, загружен ли модуль. Откройте файл конфигурации базовых модулей 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.

Related