
Когда сайт грузится медленно, первое, что обычно советуют оптимизировать, это размер передаваемых файлов. Gzip давно стал стандартом для сжатия текстовых ресурсов: HTML, CSS, JavaScript. Но включить и забыть — не лучший подход. В этой статье разберём, что реально даёт gzip, как его правильно настроить и какие подводные камни учитывать.
Что такое gzip и почему он полезен
Gzip — алгоритм сжатия потока данных. Браузер сигнализирует серверу, что поддерживает сжатие, в заголовке Accept-Encoding, сервер отвечает сжатым телом и заголовком Content-Encoding: gzip. Для текстовых файлов выигрыш в размере часто 60-90 процентов, что ускоряет загрузку страниц и экономит трафик пользователей.
Побочный эффект — увеличенная нагрузка на CPU сервера при сжатии. Для небольших сайтов это незаметно, а для высоконагруженных сервисов имеет значение. Баланс между степенью сжатия и затратами вычислений — главный инженерный выбор.
Быстрая настройка на популярных серверах
Nginx
В nginx достаточно включить модуль gzip и указать типы файлов. Пример настроек:
- gzip on;
- gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss;
- gzip_comp_level 4; (компромисс скорость/размер)
Эти строки помещают в http или server блок.
Apache
Для Apache используется mod_deflate. Простейшая конфигурация в .htaccess или конфиге:
- SetOutputFilter DEFLATE
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
Важно исключать из сжатия уже сжатые форматы, например изображения и видео.
Настройки и их влияние
Таблица примерно показывает поведение при разных уровнях gzip:
| Уровень | Качество сжатия | Нагрузка на CPU |
| 1-3 | Быстрое, чуть хуже | Низкая |
| 4-6 | Хороший компромисс | Средняя |
| 7-9 | Максимум размера | Высокая |
На практике уровень 4-6 дает большую часть выгоды без излишней нагрузки.
Тестирование и тонкие моменты
Как проверить, что сжатие работает:
- curl -I -H «Accept-Encoding: gzip» https://example.com — посмотреть заголовки;
- инструменты браузера, вкладка Network — смотреть Content-Encoding и размер;
- проверить latency: мелкие файлы выигрывают меньше, но комбинированно дают заметный эффект.
Нюансы, о которых часто забывают: ставьте Vary: Accept-Encoding при кешировании, не сжимайте бинарные форматы и большие медиa, учитывайте TLS-CPU при HTTPS. Для мобильных пользователей и медленных сетей gzip особенно важен.
Альтернативы и заключение
Brotli часто даёт лучшее сжатие для текстовых ресурсов, особенно при уровне 4-11, но требует поддержки сервера и клиентов. Мой совет: включите gzip с уровнем 4-6, мониторьте CPU и трафик, затем экспериментируйте с Brotli для критичных страниц. Простая настройка приносит быстрый выигрыш в скорости и удобстве пользователей, если подходить к делу осознанно.