Как проверить Gzip и Brotli
Запросите один текстовый ресурс с поддержкой сжатия и без неё, сравните Content-Encoding, Vary и переданные байты. Повторите проверку для HTML, CSS и JavaScript через публичный CDN.
Быстрая проверка в DevTools
- Откройте страницу в чистом окне, DevTools → Network, включите Disable cache и перезагрузите.
- Выберите крупный собственный HTML, CSS или JS, а не изображение и не сторонний домен.
- В Response Headers найдите
Content-Encoding: brилиgzipиVary: Accept-Encoding. - Сравните Transferred с Resource Size. Переданный размер обычно меньше для хорошо сжимаемого текста.
- Повторите для динамического HTML и нескольких типов файлов на desktop/mobile.
Хороший результат: сервер выбирает поддерживаемое кодирование, возвращает целый ответ, разделяет кеш-варианты и не применяет HTTP-сжатие к уже сжатым бинарным форматам без причины.
Как оценить проблему
| Наблюдение | Уровень | Действие |
|---|---|---|
| Крупный текстовый ответ с br/gzip, Vary и меньшим transfer | Проблемы нет | Сохранить заголовки и размеры |
| Не сжат очень маленький текстовый ответ | Обычно нормально | Проверить порог и реальную выгоду |
| Крупные HTML/CSS/JS приходят identity | Высоко | Проверить MIME, origin, CDN и правила |
| Повреждён ответ или клиент получает неподдерживаемое кодирование | Критично | Откатить фильтр и очистить кеш |
Независимая проверка curl
curl -sS -D gzip.headers --compressed \
-o gzip.body https://example.com/app.js
curl -sS -D identity.headers \
-H 'Accept-Encoding: identity' \
-o identity.body https://example.com/app.js
wc -c gzip.body identity.body
rg -i 'content-encoding|vary|content-type' *.headers--compressed декодирует тело перед сохранением, поэтому оба файла должны совпасть по содержимому и распакованному размеру. Для сетевой экономии используйте curl -w '%{size_download}' -o /dev/null отдельно для каждого запроса.
Расхождения и границы
- HEAD-запрос может обрабатываться иначе; для доказательства размера используйте GET.
- CDN, география, HTTP-версия и кеш могут давать разные кодирования в разных запусках.
- Отсутствие Gzip у JPEG/PNG/WebP/MP4/ZIP обычно не проблема.
- Brotli не обязан появляться, если клиент его не предлагает или уровень доставки его не поддерживает.
- Сжатие стороннего домена нельзя исправить в конфигурации вашего origin.
Автоматическая цена относится к согласованным URL и уровням доставки на странице услуги. Для исправления используйте пошаговую инструкцию.