mod_deflate - "жмем" web-страницы

Версия для печатиОтправить другуPDF version

Web-сервер может сжимать данные перед отправкой их клиенту. В результате, размер страницы уменьшается, соответственно необходимо будет отправить меньше данных. Но в случае использования сжатия на CPU увеличивается нагрузка, так что палка о двух концах. Для тех серверов, которые могут позволить высокою нагрузку на CPU, рекомендую использовать сжатие - размер страницы после сжатия может уменьшиться втрое! Также советую обратить внимание на то, что изображения уже сжаты, поэтому необходимо жать только текстовый вывод.

Для Apache можно использовать такие модули сжатия, как mod_gzip и mod_deflate. mod_deflate устанавливается с Apache (проверьте наличие в httpd.conf строки "LoadModule deflate_module libexec/apache22/mod_deflate.so"), поэтому займемся сразу его настройкой. Для активации модуля необходимо добавить следующий блок в конфигурационный файл Apache:

<IfModule mod_deflate.c>
          AddOutputFilterByType DEFLATE text/html text/plain text/xml
</IfModule>

 Для применения изменений необходимо перезапустить Apache:

# apachectl graceful

Однако у модуля есть намного больше настроек. Все доступные описаны на оф. сайте. Мы же используем только некоторые из них.

Для начала рассмотрим степень сжатия. mod_deflate может изменять степень сжатия от 1 (слабое сжатие) до 9 (максимальное сжатие). Добавим строку, описывающую сжатие. Теперь блок будет иметь следующий вид:

<IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml
        DeflateCompressionLevel 9
</IfModule>

Также неплохо увеличить количество обрабатываемых расширений:

<IfModule mod_deflate.c>
          AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
          DeflateCompressionLevel 9
</IfModule>

Также рекомендую изменить формат ведения логов - deflate. Теперь блок выглядит следующим образом:

<IfModule mod_deflate.c>
          AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
          DeflateCompressionLevel 9
          DeflateFilterNote Input instream
          DeflateFilterNote Output outstream
          DeflateFilterNote Ratio ratio
          LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
</IfModule>

 

Не забываем перезапустить Apache:

# apachectl graceful

Теперь проверим, как происходит сжатие данных. Для этого в описание виртуалхоста добавим следующую строку:

CustomLog /var/log/apache22/virtualhost.name-deflate.log deflate

 

Если каталог /var/log/apache22/ не существует, то его необходимо создать, после этого перезапускаем Apache:

# mkdir /var/log/apache22
# apachectl graceful

 

Формат лога следующий:

"запрос" сжатый размер/реальний размер (процент сжатия)

Ваша оценка: Нет Средняя: 3.7 (3 голоса)

Вставай, Україно!

Литература

- Слушай, если килобайт - 1024 байт, то килобаб - 1024 бабы?