Gzip и Brotli на shared-хостинге: как проверить и включить
Что такое сжатие на сервере, как проверить, включено ли оно, и как добавить Brotli и Gzip на типичный российский shared в 2026 году.
Содержание
- Что такое сжатие на сервере и зачем оно
- Gzip против Brotli
- Как проверить, что включено сейчас
- Как включить через .htaccess
- Включение Brotli
- А если хостер не разрешает .htaccess
- Тонкая настройка
- Что нельзя сжимать
- CPU-нагрузка и shared-хостинг
- Тестирование после включения
- Что делать с уже минифицированным контентом
- Чек-лист
- Куда дальше
- Частые вопросы
Сжатие на сервере уменьшает трафик на 60-80 процентов и снимает 200-500 мс с загрузки первой страницы. HTML сжимается в 4-7 раз, CSS в 5-8, минифицированный JS в 3-4. Включается парой строк в .htaccess и не требует трогать код сайта.
Сжатие на сервере это самый дешёвый способ ускорить сайт. Включается одной строкой в .htaccess, не требует менять код, не требует переписывать темы. Уменьшает трафик на 60-80 процентов, ускоряет загрузку первой страницы на 200-500 мс. И при этом я регулярно вижу сайты на shared, у которых сжатие либо выключено вообще, либо настроено только на html и забыли про js.
Ниже разберу, как проверить, что у вас сейчас работает, как включить Gzip и Brotli, и что делать, если хостер не пускает на уровне .htaccess.

Что такое сжатие на сервере и зачем оно
HTML, CSS, JavaScript, JSON, SVG это текстовые файлы. Внутри много повторов: одни и те же теги, одни и те же имена классов, одни и те же ключевые слова. Текстовые файлы хорошо сжимаются: средний HTML сжимается в 4-7 раз, CSS в 5-8 раз, минифицированный JS в 3-4 раза.
Сжатие на сервере означает, что веб-сервер перед отправкой ответа сжимает его и отдаёт сжатую версию вместе с заголовком Content-Encoding: gzip или Content-Encoding: br. Браузер пользователя распаковывает и показывает.
Выгода:
- Меньше трафика. Пользователь скачивает 30 КБ вместо 150 КБ.
- Быстрее загрузка. Особенно на медленных сетях (мобильный 3G, далёкий регион).
- Меньше нагрузка на канал хостера. На дешёвых тарифах с лимитом трафика это критично.
- Лучше Core Web Vitals. LCP падает на 100-300 мс на типичном сайте.
Стоимость на сервере: небольшое CPU на сжатие. Современные движки (LiteSpeed, nginx) делают это незаметно.
Gzip против Brotli
Два основных алгоритма, которые встречаются в 2026 году.
Gzip. Старый, известный с 1993 года. Поддерживается всеми браузерами без исключений. Сжимает чуть хуже, чем современные, но достаточно.
Brotli. Новый, придуман Google в 2013-м. Поддерживается всеми современными браузерами (даже IE последних версий). Сжимает на 15-25 процентов лучше, чем gzip, при примерно той же скорости.
В 2026 году правильный ответ это оба сразу. Браузер договаривается с сервером через заголовок Accept-Encoding: gzip, deflate, br и сервер отдаёт лучший доступный.
Старые алгоритмы (deflate, compress) можно не включать. Современные браузеры их поддерживают, но на практике все ходят либо gzip, либо brotli.
Как проверить, что включено сейчас
Самый простой способ из терминала:
curl -sI -H "Accept-Encoding: gzip, deflate, br" https://saitfix.ru/ | grep -i "content-encoding|content-type"
Если в ответе:
content-encoding: br
content-type: text/html
Brotli работает.
Если:
content-encoding: gzip
Gzip работает.
Если строки content-encoding нет вообще, сжатие не работает.
Через браузер: открываем DevTools (F12), вкладка Network, перезагружаем страницу. В колонке Size цифра большего размера слева это «полный», цифра меньше справа это «по сети». Если они равны, сжатия нет.
Сторонние сервисы: gtmetrix.com, pagespeed.web.dev, tools.pingdom.com все они показывают, включено ли сжатие.
Как включить через .htaccess
На большинстве shared-хостингов с Apache работает простое включение в .htaccess:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript text/plain text/xml application/xml application/xhtml+xml application/javascript application/x-javascript application/json application/ld+json image/svg+xml application/font-woff application/font-woff2 font/woff font/woff2
# Защита от устаревших браузеров
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
# Не сжимать уже сжатые файлы
SetEnvIfNoCase Request_URI
.(?:gif|jpe?g|png|webp|avif|ico|svgz|woff|woff2|mp3|mp4|webm|zip|gz|bz2)$ no-gzip dont-vary
</IfModule>
Что тут происходит:
AddOutputFilterByType DEFLATEвключаем сжатие для нужных типов контента. DEFLATE в названии модуля исторически зовется так, по факту это и есть gzip.- Список MIME-типов: всё, что текстовое (html, css, js, json, xml). Шрифты woff/woff2 уже сжаты, но повторное сжатие не вредит.
- Старые браузеры исключаются (актуально только если у вас 0.001 процента трафика на IE6).
- Уже сжатые форматы исключаются (jpeg, png, mp4, zip): двойное сжатие никакой выгоды не даёт.
После добавления проверяем curl-ом. Если работает, идём дальше.
Включение Brotli
Brotli на Apache даётся через mod_brotli. На shared-хостинге обычно включён, но не всегда активен в .htaccess. Включаем:
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/html text/css text/javascript text/plain text/xml application/xml application/xhtml+xml application/javascript application/x-javascript application/json application/ld+json image/svg+xml font/woff font/woff2
</IfModule>
Если Brotli и Gzip оба включены, Apache сам выбирает в зависимости от поддержки браузера.
Проверка: добавляем заголовок Accept-Encoding: br явно в curl, смотрим ответ:
curl -sI -H "Accept-Encoding: br" https://saitfix.ru/ | grep -i content-encoding
Должно вернуть content-encoding: br.
Если в ответе по-прежнему gzip или ничего, значит mod_brotli не включён на хостере. В этом случае пишем в поддержку: «прошу включить mod_brotli». На современных хостерах включают по запросу.
А если хостер не разрешает .htaccess
Иногда хостер либо не разрешает деплой .htaccess, либо игнорирует его, либо использует не Apache, а LiteSpeed или nginx.
LiteSpeed Web Server
LiteSpeed читает .htaccess совместимо с Apache, но имеет свой синтаксис:
<IfModule LiteSpeed>
SetEnvIfNoCase Request_URI .(gif|jpe?g|png|webp)$ no-gzip
</IfModule>
Brotli в LiteSpeed обычно включён глобально на хостере, и на уровне .htaccess ничего делать не нужно. Проверьте curl и убедитесь, что content-encoding: br отдаётся.
Если стоит плагин LiteSpeed Cache, он сам умеет управлять brotli и gzip (вкладка Tuning → Optimization).
Nginx (без Apache)
Nginx не читает .htaccess. Сжатие настраивается в конфигурации nginx, к которой у вас доступа нет на shared. Решения:
- Попросить поддержку хостера включить gzip и brotli.
- Поставить плагин-кеш на CMS (LiteSpeed Cache, WP Rocket), который сам сжимает контент.
- Перейти на хостинг с Apache или LiteSpeed.
Большинство российских хостеров используют либо Apache, либо LiteSpeed, поэтому вопрос nginx редко стоит остро.
Битрикс на shared
В Битриксе сжатие настраивается через Настройки → Производительность → Композитный сайт и через файл bitrix/.settings_extra.php. На уровне .htaccess тоже можно, но Битрикс часто конфликтует с дублированием сжатия (двойное сжатие = потеря CPU). Лучше включать только в одном месте.

Тонкая настройка
После включения базовой версии можно подкрутить детали.
Уровень сжатия
Gzip и Brotli оба имеют шкалу 1-9 (gzip) или 1-11 (brotli). Чем выше, тем плотнее сжатие, но дольше упаковка.
На динамическом контенте (HTML, который сервер генерирует) ставим средний уровень: gzip 6, brotli 5. Это компромисс между скоростью CPU и плотностью сжатия.
На статическом контенте (CSS, JS, шрифты, которые лежат файлами) ставим максимум: gzip 9, brotli 11. Файлы можно предсжать и положить рядом, тогда сервер просто отдаёт готовый сжатый, а не упаковывает каждый раз.
В Apache:
DeflateCompressionLevel 6
Brotli уровень настраивается на уровне сервера, в .htaccess часто нельзя.
Предсжатие статики
Самая большая оптимизация: сжать CSS и JS заранее, положить рядом и отдавать прямо.
Пример: у вас файл /assets/main.css. Запускаете локально:
brotli -q 11 main.css
gzip -9 -k main.css
Получаете два дополнительных файла: main.css.br и main.css.gz. Заливаете на сервер.
В .htaccess Apache настраиваете:
<IfModule mod_rewrite.c>
RewriteEngine On
# Предсжатый Brotli
RewriteCond %{HTTP:Accept-Encoding} br
RewriteCond %{REQUEST_FILENAME}.br -s
RewriteRule ^(.+) $1.br [QSA,L]
# Предсжатый Gzip
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule ^(.+) $1.gz [QSA,L]
</IfModule>
<FilesMatch ".css.br$">
AddType "text/css" .br
Header set Content-Encoding br
Header append Vary Accept-Encoding
</FilesMatch>
<FilesMatch ".js.br$">
AddType "application/javascript" .br
Header set Content-Encoding br
Header append Vary Accept-Encoding
</FilesMatch>
Это даёт максимум сжатия без CPU-нагрузки на каждый запрос. Astro, Next.js и большинство современных сборщиков делают такое автоматически (astro:compress или next-pwa).
Что нельзя сжимать
Сжатие не работает (или работает в ноль) для:
- JPEG, PNG, WebP, AVIF уже сжаты внутренне, повторное gzip даёт 0-3 процента.
- MP4, WebM, MP3, AAC медиаконтейнеры со внутренним сжатием.
- PDF часто внутренне сжат.
- ZIP, GZ, BZ2, TAR.GZ очевидно.
- Шрифты WOFF/WOFF2 WOFF2 уже использует Brotli внутри. Повторное сжатие бесполезно.
- Файлы меньше 1 КБ на маленьких ответах overhead на компрессию больше выгоды.
Apache сам это понимает, если правильно настроен.
CPU-нагрузка и shared-хостинг
Главный страх: «сжатие нагружает CPU, на дешёвом тарифе сайт ляжет».
Реальность 2026 года:
- Gzip на средней страничке HTML занимает 1-3 миллисекунды CPU.
- Brotli уровня 5 примерно столько же.
- На странице с 50 запросами это 100-150 мс CPU за весь рендер. Незаметно.
Сэкономленный трафик и время загрузки многократно перекрывают эту нагрузку.
Если ваш shared-хостинг такой дешёвый, что не справляется со сжатием, проблема не в сжатии, а в хостинге. Подробно про выбор я писал в статье о хостинге для малого бизнеса.
Тестирование после включения
Что проверить после правки .htaccess:
- Главная страница 200 OK
curl -sI https://saitfix.ru/ожидаем 200, не 500. - Content-Encoding отдается
curl -sI -H "Accept-Encoding: br" https://saitfix.ru/ожидаем br или gzip. - Размер уменьшился в DevTools видно соотношение «прислано / распаковано».
- PageSpeed Insights показывает зелёный конкретный пункт «Enable text compression».
- Все типы файлов сжаты проверяем главный CSS, главный JS, JSON-эндпоинт.
- Картинки не сжимаются повторно в DevTools у jpeg должно отсутствовать
content-encoding.
Если что-то не так, проверяем порядок директив в .htaccess и логи ошибок.
Что делать с уже минифицированным контентом
Минификация и сжатие это два разных слоя оптимизации. Минификация уменьшает размер исходника (убирает пробелы, комментарии, переименовывает переменные). Сжатие уменьшает размер при передаче. Они хорошо дополняют друг друга:
- Не минифицированный CSS 50 КБ.
- Минифицированный CSS 30 КБ.
- Минифицированный + Gzip 8 КБ.
- Минифицированный + Brotli 6 КБ.
Подробно про минификацию я писал в соседней статье.

Чек-лист
Проверка статуса сжатия на любом сайте.
curl -sI -H "Accept-Encoding: gzip, deflate, br" https://сайт.ру/ | grep -i content-encodingесть строка?- Если нет читаем правила
.htaccess, ищем mod_deflate, mod_brotli. - Если правил нет добавляем (см. выше).
- Если правила есть, а сжатие не работает пишем в поддержку хостера.
- После включения проверяем главную, CSS, JS, JSON.
- Меряем PageSpeed до и после: должна быть разница в 0.1-0.3 секунды.
Куда дальше
Связанные материалы: Минификация CSS и JavaScript, Кэширование браузером через .htaccess, TTFB больше 600 мс на shared-хостинге.
Если включать сжатие, тестировать, мониторить и подкручивать вам некогда, у меня в годовом и месячном тарифе абонентского обслуживания это часть стандартной оптимизации скорости. Заявка через форму на главной.
Частые вопросы
Как проверить, включено ли сжатие
Посмотреть заголовок Content-Encoding в ответе сервера: там должно быть gzip или br. Проверять надо на HTML, CSS и JS отдельно: бывает, что сжимается только часть типов файлов.
Чем Brotli лучше Gzip
Сжимает плотнее, особенно текст, при сопоставимой нагрузке на процессор при отдаче. Поддерживается всеми актуальными браузерами. Gzip оставляют запасным вариантом для старых клиентов.
Как включить сжатие на shared-хостинге
Через .htaccess, указав типы файлов для сжатия. Если хостер не разрешает переопределять настройки, включение просят у поддержки: на большинстве площадок это делается одним переключателем в панели.
Что сжимать не надо
Картинки, видео и архивы. Они уже сжаты, повторное сжатие даёт единицы процентов и тратит процессор. Сжимают только текстовые типы: HTML, CSS, JS, XML, JSON, SVG.