2015-09-27 3 views
3

У меня есть большой HTML-файл, который я обслуживаю с помощью gzip. Я заметил, что браузер начинает отображать содержимое из файла до завершения ответа HTTP. Вы можете имитировать это в командной строке:Как браузеры «сжимают» сжатые ответы?

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

Как браузеру удается развернуть ответ в «кусках»? Это связано с методом сжатия?

ответ

3

Нет, вам не нужен полный ответ, чтобы распаковать его. (формат, используемый в потоках gzip), представляет собой последовательность закодированных буквенных байтов и пар длины/расстояния (соответствует ранее несжатым данным), где эти коды начинают производить несжатые данные сразу после получения.

Блоки динамического дефлятирования имеют заголовок размером от 60 до 80 байт, описывающий коды, поэтому вам нужно только подождать, когда заголовок gzip (10 байт) и первый динамический заголовок смогут начать генерировать несжатые данные. Блоки дефлектора фиксированного кода используют предопределенный набор кодов, и поэтому вы начинаете получать данные из данных в первых двух байтах.

Смежные вопросы