HTTP
Коды ответов и сжатие
Поиск…
Сжатие HTTP
Тело сообщения HTTP может быть сжато (с HTTP / 1.1). Либо сервер сжимает запрос и добавляет заголовок Content-Encoding
, либо прокси-сервер делает и добавляет заголовок Transfer-Encoding
.
Клиент может отправить заголовок запроса Accept-Encoding
чтобы указать, какие кодировки он принимает.
Наиболее часто используемые кодировки:
- gzip-deflate (LZ77) с контрольной суммой CRC32, реализованной в программе сжатия файла gzip ( RFC1952 )
- deflate - формат данных «zlib» ( RFC1950 ), алгоритм дефляции (гибридный LZ77 и Хаффман) с контрольной суммой Adler32
Несколько методов сжатия
Можно сжимать тело сообщения ответа HTTP более одного раза. Затем имена кодировок должны быть разделены запятой в том порядке, в котором они были применены. Например, если сообщение было сжато с помощью deflate, а затем gzip, заголовок должен выглядеть так:
Content-Encoding: deflate, gzip
Несколько заголовков Content-Encoding
также действительны, но не рекомендуется:
Content-Encoding: deflate
Content-Encoding: gzip
сжатие gzip
Клиент сначала отправляет запрос с заголовком Accept-Encoding
который указывает, что он поддерживает gzip:
GET / HTTP/1.1\r\n
Host: www.google.com\r\n
Accept-Encoding: gzip, deflate\r\n
\r\n
Затем сервер может отправить ответ со сжатым телом ответа и заголовком Content-Encoding
который указывает, что была использована кодировка gzip ::
HTTP/1.1 200 OK\r\n
Content-Encoding: gzip\r\n
Content-Length: XX\r\n
\r\n
... compressed content ...