Compression 在什么情况下';是否有助于压缩已压缩的数据?

Compression 在什么情况下';是否有助于压缩已压缩的数据?,compression,Compression,据我所知,数据压缩背后的基本原理是搜索重复的模式并消除发现的重复项,因此最终结果无法在不丢失数据的情况下进一步压缩,如果无论如何尝试,将导致数据大小增加,而不是期望的减少。但是还有,例如,ssh压缩,它(当ssh被用作代理时)可以加速甚至已经经过gzip压缩和https加密的互联网流量。它如何工作以及为什么工作(如果工作)?一个被压缩的文件可以通过某种魔法再次被压缩而不丢失数据吗?在哪些使用情形下,它实际上可以发生,在哪些情况下会有用?通常只有当第一次压缩达到或至少接近该压缩格式的最大压缩比时。

据我所知,数据压缩背后的基本原理是搜索重复的模式并消除发现的重复项,因此最终结果无法在不丢失数据的情况下进一步压缩,如果无论如何尝试,将导致数据大小增加,而不是期望的减少。但是还有,例如,ssh压缩,它(当ssh被用作代理时)可以加速甚至已经经过gzip压缩和https加密的互联网流量。它如何工作以及为什么工作(如果工作)?一个被压缩的文件可以通过某种魔法再次被压缩而不丢失数据吗?在哪些使用情形下,它实际上可以发生,在哪些情况下会有用?

通常只有当第一次压缩达到或至少接近该压缩格式的最大压缩比时。这将需要高度冗余的数据作为未压缩的输入。当您接近最大压缩比时,压缩数据中会保留一些冗余

一个简单的例子是deflate,它的最大压缩比是1032:1。如果我从10亿(109)个字节开始,gzip的第一次压缩会将其压缩到970501字节,比率为1030.4:1。结果本身大部分是零,因此第二次压缩将其压缩到2476字节,比率为394.8:1。(我正在减去gzip头和尾来计算比率。)这仍然是多余的,尽管不是很长的零字符串。它以8.78:1的比率将第三次压缩到298字节

尝试第四次压缩会导致更大的输出,这与您在尝试压缩已经压缩的数据时通常会得到的结果相同。这是大多数情况下都会发生的事情,因为正常的压缩数据与随机数据在压缩器中是无法区分的


ssh/sshd对已经压缩的数据进行第二次压缩几乎不会加快速度。这只会让他们慢下来。不仅仅是数据的小范围扩展,还包括压缩所需的时间。

应用不同的压缩算法可以获得良好的效果。通常不超过两个。该方法在任何方面都不应类似。但是应用相同类型的压缩会导致低压缩率,甚至会导致尺寸增大。另外,通过压缩来加速HTTPS加密的通信也是有意义的,因为HTTP编码会增加消息的大小。Si首先压缩HTTP编码的消息,用HTTPS加密并发送。所以ssh socks代理是正确的。那么,压缩真的有助于浏览吗?是的,这很有帮助。许多web服务器都这样做。所有浏览器都接受gzip并压缩。可能在大多数HTTP服务器上都可以启用它。浏览器发送接受编码,但web服务器响应内容编码,这是由浏览器发送的一个或多个内容编码。它可以应用于多个单一编码。其中任何一种都可以是压缩类型。专用的deflate压缩器在第一次压缩时可以达到1031.98:1的比率。如果ssh压缩对https流量没有意义,那么为什么大多数VPN解决方案都包括流量压缩选项?根据你的回答,这不是毫无意义吗?只有当它是第二次压缩时才是毫无意义的。如果流量没有被压缩,那么这是一件好事。对于已经压缩的流量,空间上的损失很小(只有百分之一的零头),实际上只有CPU时间上的损失,没有任何好处。