Сжимаем сайт при помощи mod_deflate
Решил заняться оптимизацией скорости загрузки блога и решил его прогнать при помощи сервиса webo.in, в рекомендациях по оптимизации было написано:
HTML-файлы могут быть уменьшены в размере.
Рекомендуется применить для них технику minify, также размер файлов может быть существенно (до 80%) уменьшен через архивирование (gzip).
Решил начать с архивирования файлов... Перейдем к mod_deflate
- Apache 1.3 - mod_gzip и mod_deflate (разработанный Сысоевым, автором nginx). Подробнее можно почитать у Лиссяры -> mod_gzip - сжатие html страниц "на лету"
- 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
Далее, указываем в виртуальных хостах путь до лога, например:
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 спасибо, попробую поковырять
Оставьте свой комментарий