与此同时(这个问题已经有点老了)大多数人无论如何都在为每个连接使用 TLS,所以关于性能的问题已经变得有点多余了。不过这个还是值得一看的:
1) 客户端有快速的互联网 --> gzip 是相关的
2) 客户端网速慢 --> gzip 阻止部分解析
情况正好相反。客户端的互联网连接(或到服务器的路由)越慢,您从 gzip 压缩(或一般压缩)中获得的优势就越大。
如果压缩/解压缩所需的时间加上传输压缩数据所需的时间小于立即传输未压缩数据所需的时间,则压缩会很有帮助。
Gzip 通常会将您的数据减少到其原始大小的 1/3 到 1/2 之间(取决于它是什么),并且压缩运行速度约为 50MB/s (+/- 5)。解压速度大约是原来的 3 倍。
100MBit 以太网的吞吐量约为 12.5MB/s,而大多数人还没有 100MBit 的互联网访问(由于它通常堆叠在 ATM 之上,因此也比普通以太网慢)。此外,大多数人大部分时间都无法通过一次下载来完全满足他们的高带宽互联网连接。
因此,实际上,对于普通普通用户和不在您家中的局域网中但“在其他地方”的服务器,假设您获得 5MB/s(这大约是我所拥有的理论最大值的两倍在这里,顺便说一句)。
要传输一个 50kB 的文件,您需要 0.01 秒。 gzip 压缩增加了大约 0.001 秒的压缩时间和 0.0003 秒的解压缩时间(我们四舍五入说总共 0.002 秒),但您只需要传输 16kB,这需要 0.0032 秒。
将它们加在一起,使用 gzip 压缩传输大约快一倍。
当然,最终(当普通用户将拥有 200Mbit/s 的互联网,而服务器拥有 100Gbit/s 的上行链路时)这个数字将会好转。
更新(几年后):
今天,我偶然发现了Squash Compression Benchmark 站点,该站点显示了在不同计算机上测量的各种压缩算法(其中包括 gzip)的漂亮图表。它还包括一个传输+处理计算器,它证明了我的主张:链接越慢,压缩的价值就越大。
您可以立即看到,对于较慢的传输速度(我选择 250kB/s 作为示例),压缩是一大优势。与通过网络传输东西所节省的时间相比,压缩/解压缩时间几乎是微不足道的。
但是,随着传输速度接近与压缩/解压缩速度相同的数量级,优势会减弱。对于“典型的,不是很棒”的台式计算机,根据使用的压缩算法,收支平衡点将介于 10 MB/s 和 100 MB/s 之间,这大致对应于您在 DSL 上获得的理论最大吞吐量-100 或千兆光纤互联网连接。对于任何低于 100 Mbit/s 的链接,可以肯定的是,压缩是“赢”的,而在高于 100 Mbit/s 的情况下,它更像是“取决于”,而在千兆位以上的速度,它肯定是“失败”。
请注意您的计算机速度对“压缩是值得的”方面的真实情况和谎言有何影响巨大。适用于您的桌面游戏设备的情况可能不适用于您的低成本手机。
详细说明:除最后一张外,所有屏幕截图都是针对“E-Desktop Intel Core i3”机器(典型的“没有什么特别的,不是很棒”的台式电脑),而最后一张是针对“Raspberry 2”(不太- 糟糕,但仍然是低功耗的 ARM 小型计算机)。虽然您可以毫无疑问地说,在 10 MB/s(即 100Mbit 链接)下,在 Core i3 上进行压缩总是大胜(将总时间缩短不到一半),在 Raspberry 上存在一些快速压缩器,可以说值得这样做,但 zlib 压缩肯定比不压缩更糟糕。
在 Raspberry 上,在 100 Mbit/s 时不是很清晰: