SEO html5css.dev
html5css.dev

SEO продвижение сайтов

Полный цикл: от проектирования и семантики до ссылочного, перелинковки и текстов.

0. Старт С чего начинается работа: цели, инструменты, сервисы 2 1. Проектирование сайта Структура, семантика, title и description 11 2. Прототипирование Карточка товара и страница категории на примере магазина 3 3. Контент и ключевые слова Ключи в тексте, заголовки, объём, читаемость, изображения, внутренние ссылки 20 3.1. Сайт целиком и коммерция Структура, sitemap, крошки, домен, контакты, ассортимент, доставка, поддержка 22 3.2. Поведенческие факторы Домен и бренд, релевантность title, вложенность, удовлетворённость пользователя 11 4. Техническая оптимизация Скорость, дубли, robots.txt, sitemap.xml, битые страницы 9 5. Внешние факторы Ссылочное, доноры, анкоры, линкбилдинг 13 6. Продвижение бренда Брендовый трафик и его оценка 3 7. Нестандартные методы Актуализация контента, нулевая позиция, SILO, обрезка контента 17 8. Крауд-маркетинг Форумы, отзовики, Q&A, соцсети, поиск площадок и сервисы 16 8.1. Стратегии крауда Стратегии размещения, выживаемость постов, объёмы, делегирование 11 9. Юзабилити сайта Макет, навигация, формы, корзина, контрастность 10 10. Внутренняя перелинковка Вес страниц, анкоры, схемы связывания 10 11. Работа с текстами LSI, структура текста, применение ключей 8

С чего начать

Последовательный курс: проектирование → внутренняя оптимизация → техничка → ссылочное → тексты.

15глав
166уроков

Мобильная выдача

Отдельный курс про мобильный индекс: скорость, интерфейс, голосовой поиск и регионы.

6глав
44урока

Новый курс

Поиск всё чаще отвечает текстом. Курс о том, как попадать в источники этих ответов и не потерять доверие.

5глав
15уроков
  1. html5css.dev
  2. SEO
  3. Мобильное SEO
  4. Скорость сайта
  5. Сжатие: Brotli и GZIP
Глава 4 · Скорость сайта Урок 3 из 7 Обновлено 26.08.2026

Сжатие: Brotli и GZIP

Сжатие — самое выгодное соотношение усилий и результата в оптимизации скорости: одна настройка сервера уменьшает текстовые ресурсы в разы. Разбираем актуальную конфигурацию.

Что изменилось с прошлой версии урока Урок назывался «GZIP сжатие» и описывал только его. Сегодня основной алгоритм — Brotli, а GZIP работает запасным вариантом. Конфигурация ниже даёт оба.

Что сжимать и насколько это помогает

ТипСжиматьТипичный выигрыш
HTMLДав 5–8 раз
CSSДав 6–8 раз
JavaScriptДав 3–4 раза
JSON, XML, sitemapДав 5–10 раз
SVGДав 3–5 раз
Шрифты WOFF2Нетуже сжаты
JPEG, PNG, WebP, AVIFНетуже сжаты
Видео, архивы, PDFНетуже сжаты

Конфигурация nginx

# --- Brotli (модуль ngx_brotli) ---
brotli              on;
brotli_static       on;      # отдавать готовые .br, если есть
brotli_comp_level   5;       # 4–6 для сжатия на лету
brotli_min_length   256;
brotli_types
    text/plain text/css text/xml
    application/javascript application/json
    application/xml application/rss+xml
    image/svg+xml;

# --- GZIP как запасной вариант ---
gzip                on;
gzip_static         on;
gzip_comp_level     5;
gzip_min_length     256;
gzip_vary           on;
gzip_proxied        any;
gzip_types
    text/plain text/css text/xml
    application/javascript application/json
    application/xml application/rss+xml
    image/svg+xml;
  • text/html не указывают — nginx сжимает его всегда.
  • Уровень 4–6 для сжатия на лету: выше даёт мало, а нагрузку на процессор увеличивает заметно.
  • min_length 256 — файлы мельче сжимать невыгодно.
  • gzip_vary on — корректная работа с промежуточными кешами.

Статическое сжатие

Для файлов, которые не меняются между релизами, лучше подготовить сжатые версии заранее на сборке — с максимальным уровнем, поскольку время сжатия уже не важно:

# на сборке, рядом с исходниками
find dist -type f \( -name '*.js' -o -name '*.css' -o -name '*.svg' \) \
  -exec brotli -f -q 11 -k {} \; \
  -exec gzip  -f -9  -k {} \;

При включённых brotli_static и gzip_static nginx отдаст готовый файл, не тратя процессор на каждый запрос.

Проверка

# размер без сжатия и со сжатием
curl -s -o /dev/null -w 'без:  %{size_download} байт\n' \
     https://site.ru/css/main.css

curl -s -o /dev/null -H 'Accept-Encoding: br,gzip' \
     -w 'со:   %{size_download} байт\n' \
     https://site.ru/css/main.css

# какой алгоритм применён
curl -sI -H 'Accept-Encoding: br,gzip' https://site.ru/ | grep -i content-encoding

В DevTools → Network колонка Size показывает два числа: переданный размер и распакованный. Если они совпадают — сжатие для этого ресурса не работает.

Частая причина «сжатие не работает» Ресурс отдаётся не тем сервером, для которого настроено сжатие: например, статика идёт через CDN или отдельный обработчик со своей конфигурацией. Проверяйте заголовок content-encoding для каждого типа ресурса отдельно, а не только для главной страницы.

Сжатие и CDN

Если статика идёт через CDN, сжатие обычно включается в его настройках, а не на вашем сервере. Проверьте, что CDN:

  • поддерживает Brotli, а не только GZIP;
  • корректно кеширует разные варианты по Vary: Accept-Encoding;
  • не пересжимает уже сжатые изображения.

Подробнее — в уроке об использовании CDN.

Итог

Сжатие — первая настройка, которую нужно проверить при работе над скоростью: она даёт кратное уменьшение текстовых ресурсов ценой одной правки конфигурации. Brotli основным, GZIP запасным, готовые файлы для неизменной статики, уже сжатые форматы не трогаем.

Частые вопросы

Brotli или GZIP?

Brotli как основной: на текстовых ресурсах он сжимает примерно на 15–20 % лучше GZIP. GZIP оставляют запасным для клиентов, которые Brotli не поддерживают. Сервер выбирает алгоритм сам по заголовку Accept-Encoding.

Какие файлы не нужно сжимать?

Уже сжатые: JPEG, PNG, WebP, AVIF, MP4, ZIP, PDF. Повторное сжатие не уменьшает размер, но тратит процессорное время, а иногда даже увеличивает файл.

Что такое статическое сжатие?

Заранее подготовленные файлы .br и .gz рядом с оригиналом. Сервер отдаёт готовый файл без сжатия на лету — быстрее и с максимальным уровнем сжатия.

Как проверить, что сжатие работает?

Запросом с заголовком Accept-Encoding и сравнением размера ответа, либо во вкладке Network в DevTools: колонка Size показывает переданный и распакованный размер.

Вся глава «Скорость сайта» — 7 уроков
  1. Производительность сайта и способы её измерения
  2. Минификация контента
  3. Сжатие: Brotli и GZIP
  4. Оптимизация изображений
  5. Протоколы HTTP/2 и HTTP/3
  6. Настройка многоуровневого кеширования
  7. Использование CDN