Подтвердить что ты не робот

Каково влияние gzip на файлы для передачи HTTP?

Я знаю, что файлы gzipping перед отправкой по сети сохраняют пропускную способность, а для статических файлов, которые можно кэшировать, это не оказывает существенного влияния на использование ЦП на стороне сервера.

Но как насчет клиента? Они должны уничтожить все файлы, которые будут отправлены, что потребует процессорного времени. Кроме того, я беспокоюсь, что весь файл должен быть получен и уничтожен до того, как любой синтаксический анализ может состояться.

Это кажется мне странным, потому что я вижу два сценария:

1) client has fast internet   -->   gzip is relevant
2) client has slow internet   -->   gzip prevents partial parsing

Ясно, что точное ускорение (или замедление?) будет зависеть от точных обстоятельств передаваемых файлов и клиента. Тем не менее, мне любопытно, какую временную стоимость (или как я могу измерить стоимость) на стороне клиента?

4b9b3361

Ответ 1

Им нужно уничтожить все файлы, которые будут отправлены, что потребует процессорного времени.

Возможно, но время процессора, затрачиваемое на декомпрессию, чрезвычайно мало по сравнению со всеми остальными, что происходит при загрузке страницы (синтаксический анализ, стилизация, рендеринг, скриптинг).

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

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

В частности, я хочу знать, как я могу определить, сколько времени потеряно из-за gzipping.

Вот интересная статья, где автор выполняет тип теста, который вы описываете. Инструменты доступны для загрузки, чтобы вы могли выполнять те же тесты в своей собственной среде.

Автор заключает:

Я думаю, что очень мало случаев, когда вы не должны использовать gzip для своего контента. Если ваша типичная страница меньше 100 байт, то gzipping может повредить клиентам и производительность серверов. Но ни один веб-сайт, за исключением, может быть, нескольких веб-сервисов, не обслуживает страницы с типичным размером не более 100 байт. Поэтому theres не может служить оправданием для обслуживания несжатого HTML.

Ответ 2

В то же время (вопрос уже немного старый), большинство людей используют TLS для каждого подключения, так что вопросы о производительности стали немного лишними. Но все же стоит посмотреть на это:

1) у клиента есть быстрый интернет → gzip актуально
2) у клиента медленный интернет → gzip предотвращает частичный разбор

Противоположный случай. Чем медленнее клиентское интернет-соединение (или маршрут на сервер), тем больше преимуществ вы получите от сжатия gzip (или сжатия вообще).

Сжатие полезно, если время, необходимое для сжатия/распаковки, плюс время, необходимое для передачи сжатых данных, меньше времени, необходимого для немедленной передачи несжатых данных.

Gzip обычно сокращает ваши данные до 1/3 и 1/2 от его первоначального размера (в зависимости от того, что это такое), а сжатие составляет около 50 МБ/с (+/- 5). Декомпрессия примерно в 3 раза быстрее.

100MBit ethernet имеет пропускную способность около 12,5 МБ/с, и у большинства людей еще нет доступа к Интернету на 100 Мбит (что, как правило, складывается поверх ATM, работает медленнее, чем обычный ethernet). Кроме того, большинство людей большую часть времени не могут полностью насытить свое высокоскоростное интернет-соединение с одной загрузкой.

Итак, реалистично, для обычного среднего пользователя и сервера, который не находится в вашей локальной сети дома, но "где-то еще", скажем, вы получаете 5 МБ/с (что примерно в два раза превышает теоретический максимум, который у меня есть здесь, кстати).

Чтобы передать файл 50 КБ, вам понадобится 0,01 секунды. сжатие gzip добавляет около 0,001 секунды для сжатия и 0,0003 секунды для декомпрессии (пусть округляет и скажет 0,002 всего), но вам нужно передать только 16 кбайт, что занимает 0.0032 секунды.

Добавьте их вместе, передача с сжатием gzip примерно в два раза быстрее.

Теперь, конечно, в конечном итоге (когда средний пользователь будет иметь доступ к интернету в 200 Мбит/с, а серверы будут иметь восходящие линии 100 Гбит/с), эта цифра будет развернута.