Вебсправочник
Основы веб-разработки

Сжатие HTTP: переданные байты и размер содержимого

Сжатие HTTP уменьшает объём передаваемого представления, особенно для текстовых HTML, CSS и JavaScript.

Назначение

Сжатие HTTP уменьшает объём передаваемого представления, особенно для текстовых HTML, CSS и JavaScript.

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

Клиент сообщает поддерживаемые кодирования через Accept-Encoding, сервер выбирает подходящее Content-Encoding. В Network размер переданных данных может отличаться от размера после распаковки. Для разных вариантов кешу может понадобиться Vary.

Пример

Accept-Encoding: gzip, br

Content-Encoding: gzip
Vary: Accept-Encoding

Что должно получиться

Первая строка относится к запросу, следующие — к ответу сервера. Само перечисление заголовков не выполняет сжатие: тело должно быть закодировано соответствующим образом.

Граница применения и частая ошибка

Не сжимайте всё повторно без измерений: уже сжатые изображения могут почти не уменьшиться. Ошибочный Content-Encoding способен сделать ответ нечитаемым, даже если статус равен 200.

Самостоятельная проверка

Сравните заголовки и размеры одного CSS-файла со сжатием и без него на учебном сервере. Проверьте, что клиент получает одинаковое содержимое после декодирования.

При использовании CDN для статических ресурсов проверьте, какой слой выполняет сжатие — исходный сервер или CDN — и как кеш различает варианты ответа. Наличие услуги в каталоге ещё не подтверждает работу Brotli или gzip на выбранном тарифе: это проверяется по реальным заголовкам и телу ответа.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.