下载压缩文件比解压缩文件需要更长的时间吗?


13

我曾经读过某个地方,由于zip文件的性质,下载压缩文件要比相同大小的未压缩文件花费更长的时间。

这是真的还是废话?

编辑:我正在谈论HTTP流量


1
通过哪个协议?
innaM

4
您是在谈论两个相同大小的文件,一个压缩和一个未压缩(例如,每个1MB),还是压缩和未压缩的同一文件(例如1MB和345KB)?
Toby Allen

您应该考虑下载速率,而不是时间。在这两种情况下,速率都是相同的...最后,您在给定的时间内下载了有限数量的字节。就像Toby所暗示的那样,下载压缩文件最终将使您获得更多未压缩的数据,从而有效地提高了未压缩的下载率。
KFro

Answers:


21

当然,当连接使用compression时

您无法有效地压缩2次数据。因此,打开压缩功能后,传输1 MB的zip文件比传输1 MB的txt文件要慢。

注意:这取决于传输协议。FTP或其他协议没有内置压缩。HTTP有。


通常只有一点点。您不应gzip mp3,jpg或zip。
Rich Bradshaw

1
它可以配置要压缩的类型。因此,由Web服务器管理员首先启用压缩,然后再禁用众所周知类型的压缩。
Christopher

它会传输速度较慢(通过管道传输速度较慢)还是会花费更长的时间下载,因为服务器刻录的周期会重新压缩(传输速度较慢)?挑剔的一点,因为最终结果仍然是下载速度较慢。
MrChrister

3
这不是压缩/解压缩数据需要花费多长时间的问题,因为在大多数情况下,连接是瓶颈。http压缩是在传输上完成的,而不是文件本身,因此延迟仅通过压缩传输而不是整个文件的延迟而增加。除了在服务器上使用过高的CPU使用率之外,启用http压缩确实没有任何弊端。另一方面,所有服务器管理员都应禁用无法很好压缩的文件类型传输的压缩。
Christopher

11

如果通过标准FTP或HTTP下载,则不是这样。有关其他连接类型,请参见Christopher的答案

假设连接相同,则下载速度取决于文件的大小。

如果启用了自动病毒检查,下载结束时可能会延迟,因为它必须打开并解压缩zip文件才能检查内容,而不是直接检查文件。


2
如果在通道上使用了压缩,则不会(请参阅@Christopher的答案)。
fretje

2

如果您使用PPP(拨号或VPN)连接进行压缩,由于其性质,压缩文件的下载速度可能会比文本文件低(前者已被压缩,后者将被协议压缩,从而提高了测量速度) 。

但是,如果您比较收到的信息量,则下载压缩文件的效率仍然更高,因为任何文件存档器通常都比链接层压缩更胜一筹。因此,即使压缩会稍微提高下载速度,压缩文本文件的下载速度也会比相同文本文件的下载速度更快。


0

您必须注意,它在HTTP协议中没有什么不同,因为在服务器和路由器中,它们使用GZIP压缩数据包,然后对它们进行发送(如果您压缩或不压缩),则它们的行为相同。


0

如前所述,HTTP流量可以压缩,但并非总是如此。

您可能是在人们使用电话调制解调器而不是adsl /电缆调制解调器的时候读过的。在这种情况下,文本在发送或接收之前已被压缩,因此文本文件的发送速度会更快。


2
我们中有些人仍然使用电话调制解调器访问Internet。:-)
Brian Knoblauch

0

不确定是否相关,但是如果下载一个压缩文件(不压缩不压缩),则比下载多个(未压缩)文件相同的软件包要快,这是因为开始下载每个文件之前需要HTTP请求。


0

实用答案: 压缩文件的目的是使文件更易于与他人共享(即下载)。压缩是通过压缩进行的,这意味着用普通英语“压缩文件”。

计算机软件不是完美的,在某些情况下可能会出现奇怪的情况,即压缩文件会使文件变大并且难以共享。找到这些拉链失败的边缘情况可能会让您流泪,也不值得花时间。

假设答案:这非常复杂。答案取决于zip程序,传输协议,文件大小,文件类型,甚至可能是在客户端计算机上运行的浏览器类型或防病毒软件。换句话说,“取决于”。


-2

答案实际上是“取决于”:取决于Web服务器选择发送文件的格式。

如果服务器使用二进制原样字节生成答案,则大小相同的压缩文件和解压缩文件将以相同的速度下载。

如果服务器以Base64编码生成响应,则它将增加字节数,并且压缩后的文件将花费更长的时间下载。尽管几年前已经非常流行,但大多数现代Web服务器都不再这样做。

解释一下,base64格式是6位可显示字符的流。这意味着,例如,将6 * 8 = 48位的6个二进制字节编码为48/6 = 8个字符。通常,对于n个二进制字节,发送的base64字符数为(n * 8)/6。因此,发送n个二进制字节比发送n个文本字节要慢33%(8除以6),因为发送的字符更多已发送。


1
对于电子邮件,这是正确的,但对于所有其他协议,并非如此。
Brian Knoblauch

它确实适用于http,这就是问题所在。http下载在base64中使用多部分编码
harrymc

1
我对此表示怀疑,您是否有备份的参考?
hasen

1
不,http通常不会对base64二进制文件进行编码。有一个mime类型可以声明这种情况,但是通常仅用于期望“数据包”(电子邮件)在某些时候会通过非8位干净连接的电子邮件。确保HTTP所在的TCP / IP协议是8位纯净的,而mime编码内容只会浪费带宽。
RBerteig

1
发送文件的服务器可以在几种格式中选择。我的答案与大约5年前进行的一项调查有关。当时,相当多的网站都使用Content-Transfer-Encoding(不同于mime类型)生成下载的多部分响应。根据快速检查,情况已不再如此,事实上,最新的RFC建议不要在http响应中使用Content-Transfer-Encoding。因此,我相信对OP的真正答案是:过去,对于某些网站,上面的计算曾经是这种情况,但现在却很少见。但是,这不是都市神话。
harrymc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.