Сжатие 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 на выбранном тарифе: это проверяется по реальным заголовкам и телу ответа.