Как установить и настроить mod_deflate в Ubuntu 14.04

Вступление

Mod_deflate - это модуль Apache, который позволяет сжимать выходные данные с вашего веб-сервера перед отправкой клиенту. Как только размер содержимого вашего сайта сжимается, его размер уменьшается, и клиенты могут загружать его быстрее. Это ценно не только для клиентов с меньшей пропускной способностью, но также учитывается поисковыми системами при оценке эффективности вашего сайта и рейтинга страницы.

В дополнение к сжатию контента, mod_deflate также может быть использован для распаковки. Этот метод будет применим, если вы используете Apache в качестве обратного прокси-сервера и хотите дополнительно обрабатывать контент, проходящий через прокси-сервер. Однако эта техника имеет очень ограниченное применение. Мы сосредоточим внимание на статье об использовании mod_deflate для сжатия.

Предпосылки

Это руководство было протестировано на Ubuntu 14.04. Для CentOS 7 проверьтеthis guide. Установка и настройка модуля не зависит от ОС или версии ОС, но расположение файлов конфигурации может различаться в разных ОС и их версиях.

Также предполагается, что вы используете Apache 2.4.0 или выше. Чтобы установить Apache, выполните шаг №1 статьиHow To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04.

Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для команды требуется root-доступ, ему будет предшествоватьsudo. Если у вас еще нет такой настройки, следуйте этому руководству:Initial Server Setup with Ubuntu 14.04.

Монтаж

Mod_deflate включен и включен в стандартной установке Apache на Ubuntu 14.04. Чтобы подтвердить это, запуститеapachectl, интерфейс управления сервером Apache, и отфильтруйте вывод с помощьюgrep для ключевого словаdeflate следующим образом:

apachectl -t -D DUMP_MODULES |grep deflate

[.note] #Note:Еслиapachectl отсутствует на вашем пути, возможно, вам придется использовать полный путь к команде:/usr/sbin/apachectl.
#

Вы должны увидетьdeflate_module (shared), если mod_deflate установлен и включен. Если вы этого не видите, выполните следующие действия по устранению неполадок:

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

  2. Проверьте, загружен ли модуль. Откройте файл конфигурации модуля/etc/apache2/mods-enabled/deflate.load, который является символической ссылкой на/etc/apache2/mods-available/deflate.load, и убедитесь, что эта строка присутствует и не закомментирована:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

[.note] #Note: Не забудьте перезапустить Apache, если вам нужно было внести изменения в конфигурацию Apache. Команда перезапуска:sudo apachectl restart.
#

конфигурация

Чтобы начать использовать mod_deflate, вы должны указать, какие типы файлов должны быть сжаты. С одной стороны, форматы простого текста могут быть значительно уменьшены в размере путем сжатия, и поэтому имеет смысл применять его к файлам HTML, CSS или JavaScript. С другой стороны, многие мультимедийные форматы, такие как Flash и изображения, уже содержат сжатие, и дополнительное сжатие будет бесполезным.

Для начала вы можете использовать конфигурацию по умолчанию в файле/etc/apache2/mods-enabled/deflate.conf, символическую ссылку на/etc/apache2/mods-available/deflate.conf, которая:

/etc/apache2/mods-enabled/deflate.conf


        
                # 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
        

Приведенный выше код означает, что, когда файл соответствует расширениям, любое популярное расширение текстового файла, такое как.html,.txt,.xml,.css,.js и т. Д. это будет сжато действием deflate mod_deflate. Если вы не уверены, как расширения отображаются в MIME-типах, проверьте файл/etc/mime.types. Вы можете добавить дополнительные расширения, специфичные для вашего сайта.

 +
*Note:* In Ubuntu the Apache configuration is organized intuitively in multiple files. Also, configuration files are usually not enabled. For example, the modules configuration files reside in the directory `+/etc/apache2/mods-available/+`, e.g. `+/etc/apache2/mods-available/deflate.conf+`. A module configuration file is enabled only when a symlink to it is created in the directory `+/etc/apache2/mods-enabled/+` such as `+/etc/apache2/mods-enabled/deflate.conf+`. +

Кроме того, у mod_deflate есть несколько важных параметров конфигурации:

  • DeflateCompressionLevel - применяемый уровень сжатия. По умолчанию этот уровень равен 9, самый высокий уровень сжатия. 1 - наименьший уровень сжатия. Более высокое сжатие дает наименьший выход за счет более высокой загрузки ЦП сервера.

  • DeflateMemLevel - объем памяти zlib, который может использовать библиотека сжатия. Значение по умолчанию 9, что также является самым высоким значением. Чтобы точно рассчитать разрешенный объем памяти, вам следует умножить значениеDeflateMemLevel на 16K.

  • DeflateWindowSize - Размер окна сжатия. По умолчанию это максимально возможное значение 15. Более высокое число означает более высокий уровень сжатия, опять же за счет большего количества ресурсов сервера.

В большинстве случаев вы можете оставить вышеуказанные значения по умолчанию. Однако, если вы подозреваете, что производительность вашего сервера значительно ухудшилась после использования mod_deflate, вы можете настроить более низкие значения в файле конфигурации/etc/apache2/mods-enabled/deflate.conf следующим образом:

DeflateCompressionLevel 1

Вышеуказанное снизит уровень сжатия, что приведет к увеличению файлов. Тем не менее, mod_deflate будет использовать меньше CPU таким образом. Обязательно перезапустите Apache, если вы решите применить любые такие изменения.

тестирование

Существуют различные способы тестирования mod_deflate, но самый простой - использовать wget, неинтерактивный сетевой загрузчик. Если у вас его еще нет в Ubuntu 14.04 Droplet, вы можете установить его с помощью командыsudo apt-get install wget.

Для теста вам понадобится текстовый файл размером не менее нескольких сотен килобайт, который при сжатии должен уменьшиться. Если у вас нет такого файла, вы можете загрузитьJQuery, популярную библиотеку JavaScript, и загрузить ее на свой сайт. Если вы не уверены, куда поместить файл, вы можете просто загрузить его в корневой каталог документов Apache по умолчанию, которым является/var/www/html/ в Ubuntu 14.04. Таким образом, файл будет доступен в корневом каталоге вашего сайта по умолчанию.

 +
*Note:* In order for mod_deflate to compresses the output the client (usually the browser) has to support compression. If the client does not support compression the file will be sent as is. +

После загрузки тестового файла на ваш сайт загрузите его с помощьюwget. Вы можете выполнить этот тест либо с локального компьютера, либо с Droplet. как это:

wget --header="Accept-Encoding: gzip" http:///jquery-1.11.3.js

В приведенном выше примере вы загружаете файлjquery-1.11.3.js со своего сервера Apache. Чтобы использовать сжатие, мы передаем дополнительный аргумент заголовкаwgetAccept-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 caching, который является следующим логическим шагом после включения mod_deflate.

Related