Статьи / Внутренняя оптимизация сайта /

Как ускорить загрузку страниц сайта при помощи сжатия

Как увеличить скорость загрузки страниц при помощи сжатия

Сжатие является частью спецификации HTTP/1.1 (RFC 2616). Цель сжатия очевидна — сократить объём трафика, передаваемого по сети от веб­сервера к браузеру и, как следствие, уменьшить время загрузки страниц. Алгоритмы сжатия позволяют уменьшить объём страниц более чем в 3 раза.

Как это работает?

К запросу браузер добавляет заголовок Accept­Encoding, информируя веб­сервер о своём желании получить страницу в сжатом виде. Значения заголовка Accept­Encoding — методы сжатия, которые поддерживаются браузером (gzip и deflate в примере ниже).

Получив запрос, веб­сервер находит страницу на диске, сжимает её и отсылает ответ (на схеме ниже размер ответа — 22кб, вместо исходных 80кб). В свою очередь, браузер выполнит обратное преобразование — разожмёт страницу и покажет её пользователю.

Что именно необходимо сжимать

Сжимать имеет смысл только текст: HTML, CSS, JavaScript, XML, txt и прочее. Эффективность сжатия при этом может достигать 72%. Что касается сжатия изображений/видео/аудио и прочих бинарных файлов, то оно не даст ничего, кроме нагрузки на процессор сервера.

Настройка сжатия на веб­сервере Apache2

Сжатие в Apache2 обеспечивается модулем mod_deflate, поэтому следует убедиться что модуль загружен:

Если вывод команды пустой, то потребуется загрузить модуль.

Debian 8:

a2enmod deflate

apachectl ­k restart

CentOS 7:

В файле /etc/httpd/conf.modules.d/00­base.conf раскомментируйте строку:

LoadModule deflate_module modules/mod_deflate.so

Перезапустите сервис:

systemctl restart httpd.service

Чтобы веб­сервер сжимал HTML, CSS, JavaScript, XML, txt нужно добавить в конфигурационный файл apache2.conf / .htaccess строку:

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

Антон Сыровацкий
Системный администратор дата центра ЮНИТ-ИС