14 ноября 2008 г. Apache FreeBSD GZip Оптимизация

Сжимаем сайт при помощи mod_deflate

Решил заняться оптимизацией скорости загрузки блога и решил его прогнать при помощи сервиса webo.in, в рекомендациях по оптимизации было написано:

HTML-файлы могут быть уменьшены в размере.
Рекомендуется применить для них технику minify, также размер файлов может быть существенно (до 80%) уменьшен через архивирование (gzip).

Решил начать с архивирования файлов... Перейдем к mod_deflate

  1. Apache 1.3 - mod_gzip и mod_deflate (разработанный Сысоевым, автором nginx). Подробнее можно почитать у Лиссяры -> mod_gzip - сжатие html страниц "на лету"

  2. Apache 2.2 - mod_deflate

Так как у меня версия Apache 2.2.8 на сервере, то буду рассказывать про второй пункт. Для начала необходимо установить данный модуль (желательно ставить через порты), но у меня он был уже установлен, я его просто активировал в httpd.conf

Открываем файл конфигурации Apache

vi /usr/local/etc/apache22/httpd.conf

И добавляем правило:

<ifmodule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
    DeflateCompressionLevel 8
  </ifmodule>

AddOutputFilterByType - тут назначаем фильтр DEFLATE для миме типов: text/html text/plain text/xml

DeflateCompressionLevel - степень gzip-компрессии от 1 до 9 (Инструмент для расчета степени gzip-сжатия в помощь)

Проверяем наши настройки

httpd -S
apachectl restart

Проверяем сжатие

http://localhost/

или

ну или посмотрите в своём любимом броузере (для FireFox рекомендую Live Http Headers)

Если видим строку "Content-Encoding: gzip", то всё в порядке! Идём дальше, если нет, проверьте предыдущие шаги.

Теперь в фильтр можно добавить ещё типы: text/css и text/javascript

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

Логи храним в отдельном файле

DeflateFilterNote Input instream
  DeflateFilterNote Output outstream
  DeflateFilterNote Ratio ratio
  LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate

http://httpd.apache.org/docs/2.2/mod/mod_deflate.html#DeflateFilterNote

Далее, указываем в виртуальных хостах путь до лога, например:

CustomLog /var/log/adw0rd.ru-deflate_log deflate

Комментарии

Спасибо за красивые картинки и внятное изложение :)

В книжке про оптимизацию (в восьмой главе) дополнительно рассмотрены конфигурации для различных серверов, в том числе, и для Apache 2. Там и про сжатие, и про кэширование.

Спасибо за книгу и хороший отзыв, книгу обязательно почитаю и пропиарю ;)

Article about mod_deflate settings like on Amazon EC2 AMI
http://railsgeek.com/2008/12/16/apache2-httpd-improving-performance-mod_deflate-gzip

Хм... Какой кошмар!

Да уж может конечно и просто написано, но не для таких чайникофф как я. Мне мой хостер уже 3 письмо пишет, что нагрузка в 2 раза превышает тарифную 50 чего то там. Вот попытаюсь счас воспользоваться вашими рекомендациями, если конечно не запорю че нить

Вот, что мне ответил хостер на вопрос по поводу сжатия:

Здравствуйте
Функции сжатия у нас выполняет кеширующий прокси-сервер nginx. mod_deflate для Apache отключен, так как в нем нет необходимости.
Также сжатие отдаваемой посетителю информации никак положительно не скажется на создаваемой скриптами нагрузке.
Вам необходимо оптимизировать сами скрипты, например, включив кеширование или изменив алгоритмы их работы на более оптимальные.

Про Nginx тут http://adw0rd.ru/2009/nginx-gzip/

Андрей, вообщем либо код оптимизируйте, минимизуйте css/js (например http://developer.yahoo.com/yui/compressor/ и подобные решения, так же есть онлайн сервисы, см. http://adw0rd.ru/services/ (ищите слово "сжатие", там есть ссылки на js/css темы). Либо покупайте другой тариф или меняйте хостера

adw0rd спасибо, попробую поковырять

Оставьте свой комментарий

Markdown