Скачивание заархивированного файла занимает больше времени, чем разархивированного файла?


13

Однажды я где-то читал, что скачивание заархивированного файла занимает больше времени, чем заархивированного файла того же размера, что связано с характером zip-файла.

Это правда или ерунда?

редактировать: я говорю о трафике HTTP


1
По какому протоколу?
InnaM

4
Вы говорите о двух файлах одинакового размера: один сжатый и один разархивированный (например, каждый 1 МБ), или один и тот же файл, сжатый и несжатый (например, 1 МБ и 345 КБ)?
Тоби Аллен

Вы должны учитывать скорость загрузки, а не время. В обоих случаях скорость одинакова ... в итоге вы загрузили ограниченное количество байтов за определенный промежуток времени. Как намекает Тоби, загрузка сжатых файлов в итоге дает вам больше несжатых данных, что эффективно увеличивает вашу несжатую скорость загрузки.
KFro

Ответы:


21

Когда соединение использует сжатие , тогда, конечно.

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

Примечание: это зависит от протокола передачи. FTP или другие протоколы не имеют встроенного сжатия. HTTP имеет.


Обычно только немного, хотя. Вы не должны gzip mp3, jpg или zips.
Рич Брэдшоу

1
Это настраивается для каких типов для сжатия. Таким образом, администратор веб-сервера должен сначала включить сжатие, а затем отключить сжатие для известных типов.
Кристофер

Будет ли он передаваться медленнее (медленнее по каналу) или потребуется больше времени для загрузки, потому что на сервере сгорели циклы повторного архивирования (медленнее по конвейеру)? Непростая точка, потому что конечный результат все еще медленнее загружается.
MrChrister

3
Вопрос не в том, сколько времени потребуется для сжатия / распаковки данных, поскольку в большинстве случаев узким местом является соединение. Сжатие http выполняется для передачи, а не для самого файла, поэтому задержка увеличивается только за счет задержки сжатия передачи, а не всего файла. На самом деле нет никакого недостатка в том, чтобы включить http-сжатие, за исключением слишком высокого использования процессора на сервере. С другой стороны, все администраторы сервера должны отключить сжатие для передачи типов файлов, которые сжимаются не очень хорошо.
Кристофер

11

Это неправда, если вы скачиваете через стандартный FTP или HTTP. Для других типов подключения см . Ответ Кристофера .

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

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


2
Нет, если на канале используется сжатие (см. Ответ @ Christopher).
fretje

2

Если вы используете соединение PPP (удаленного доступа или VPN) со сжатием, заархивированные файлы могут загружаться с меньшей скоростью, чем текстовые файлы, из-за их природы (первые уже сжаты, а последние будут сжаты по протоколу, что увеличит измеренную скорость) ,

Но если вы сравните объем получаемой информации, загрузка заархивированных файлов все равно будет более эффективной, поскольку любой файловый архиватор обычно превосходит сжатие на канальном уровне. Таким образом, сжатый текстовый файл будет загружен быстрее, чем тот же самый текстовый файл, даже если сжатие немного увеличивает скорость загрузки.


0

Вы должны заметить, что он не имеет различий в протоколе HTTP, потому что на сервере и в маршрутизаторе они используют GZIP, чтобы заархивировать пакет, а затем отправить его, если вы заархивировали или нет, они действуют одинаково.


0

Как уже упоминалось, HTTP-трафик может быть сжат, но это не всегда.

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


2
Некоторые из нас все еще используют телефонные модемы для доступа в Интернет. :-)
Брайан Ноблаух

0

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


0

Практический ответ: цель архивирования ваших файлов состоит в том, чтобы облегчить их передачу (iedownload) другим людям. Сжатие работает сжатием, что означает «сжатие файлов» на английском языке.

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

Гипотетический ответ: это очень сложно. Ответ будет зависеть от почтовой программы, протоколов передачи, размера файла, типа файла, возможно, даже от типа браузера или антивирусного программного обеспечения, запущенного на клиентском компьютере. Другими словами, «это зависит».


-2

Ответ на самом деле «зависит»: в зависимости от формата, который веб-сервер выбирает для отправки файла.

Если сервер генерирует ответ с двоичными байтами «как есть», то заархивированные и разархивированные файлы одинакового размера будут загружаться с одинаковой скоростью.

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

Для пояснения, формат base64 - это поток 6-битных отображаемых символов. Это означает, например, что 6 двоичных байтов, которые имеют размер 6 * 8 = 48 бит, кодируются как 48/6 = 8 символов. Как правило, для n двоичных байтов количество отправляемых символов base64 равно (n * 8) / 6. Таким образом, отправка n двоичных байтов происходит медленнее, чем отправка n текстовых байтов на 33% (8 делится на 6), поскольку больше символов посланы.


1
Это верно для сообщений электронной почты, но не распространяется на все другие протоколы.
Брайан Ноблаух

Это действительно для http, который был вопросом. Загрузка http использует многочастное кодирование в base64
harrymc

1
Я сомневаюсь в этом, есть ли у вас какие-либо ссылки, чтобы поддержать это?
hasen

1
Нет, http обычно не кодирует base64 двоичные файлы. Существует тип MIME для объявления этого случая, но он обычно используется только для электронной почты, где есть ожидание, что «пакет» (сообщение электронной почты) в какой-то момент пройдет через не чистое 8-битное соединение. Протокол TCP / IP, на котором лежит HTTP, гарантированно будет 8-битным чистым, а контент с кодированием MIME будет только расходовать пропускную способность.
RBerteig

1
Сервер, отправляющий файл, может выбрать один из нескольких форматов. Мой ответ касался опроса, который я провел около 5 лет назад. В то время довольно много сайтов генерировали многочастные ответы для загрузки с Content-Transfer-Encoding (в отличие от типа mime). Согласно быстрой проверке, это уже не так, и фактически последние рекомендации RFC против использования Content-Transfer-Encoding в ответах http. Поэтому я считаю, что реальный ответ на ФП: приведенный выше расчет имел место в прошлом для некоторых веб-сайтов, но сейчас встречается довольно редко. Однако это не городской миф.
Harrymc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.