在我的 Apache 服务器 (mod_deflate) 中启用 gzip 压缩后,我始终发现最终用户的服务平均比未压缩响应慢 200 毫秒。
这是出乎意料的,所以我修改了压缩指令以仅压缩文本/HTML 响应,启动了 Wireshark 并查看了压缩前后的网络转储。
这是我对网络中流量最小的GET的观察
压缩前
在线交易:46 46个trans的总时间:791ms 一世。TCP seq/ack: 14ms ii. 第一个数据段:693ms iii. 剩余时间:83ms(27/28 个数据单元传输 + tcp/ip 握手)
压缩后
在线交易:10 46个trans的总时间:926ms 一世。TCP seq/ack: 14ms ii. 第一个数据段:746ms iii. 剩余时间:165 毫秒(传输 6 个数据单元中的 5 个)
设置压缩后,网络上的事务数量明显低于未压缩时,这一点很清楚且可以理解。
但是,压缩数据单元从源传输到目标需要更长的时间。
似乎可以理解,压缩的额外工作需要时间,但无法理解为什么压缩时发送的每个数据都明显变慢。
我对压缩过程的理解是:
1. Apache收到GET请求 2. Apache识别资源 3.压缩资源 4. 以压缩响应响应
使用这个方案,我假设第三步是(响应的第一段之前的步骤将花费更长的时间,因为我们正在压缩 + 响应——但我假设的其余块平均应该相等时间作为未压缩的块,但它们不是。
谁能告诉我为什么……或者建议一种更好的方法来分析这种情况。还有人有前后比较...我将不胜感激任何反馈/评论/问题