提高networking速度并连接到node.js服务器时出现意想不到的行为

我有一个简单的node.js服务器,如:

var app = require('express')(); var compression = require('compression'); app.use(compression()); app.get('/', function(request, response) { response.send('<!DOCTYPE html>.......'); } app.listen(2345); 

我发送的html是2.4kB(压缩时为1.2kB)。
当testing不同的networking速度(使用开发工具),我得到这个意外的行为:

 50kbps: Latency 600ms, download 1ms 250kbps: Latency 300ms, download 0.6ms 750kbps: Latency 100ms, download 100ms 2Mbps: Latency 10ms, download 200ms 32Mbps: Latency 5ms, download 210ms 

当网速在250kbps之后增加时,我不认为下载时间应该增加。 到底是怎么回事?
再看看如果我删除压缩会发生什么:

 var app = require('express')(); app.get('/', function(request, response) { response.send('<!DOCTYPE html>.......'); } app.listen(2345); 

现在这个文件只有2.4kB,查看延迟/下载时间:

 50kbps: Latency 550ms, download 230ms 250kbps: Latency 350ms, download 50ms 750kbps: Latency 120ms, download 15ms 2Mbps: Latency 35ms, download 6ms 32Mbps: Latency 4ms, download 0.5ms 

对非压缩内容的响应似乎是正常的,但是对压缩内容(带有传输编码分块头)的响应似乎并不正确。
这是怎么回事?
我强烈build议你用任何你喜欢的工具自己模拟一个类似的testing,然后在说我的基准testing是错误的,而这是不可能的。 如果你得到不同的结果,请分享。

Express.js压缩选项

我也会毫不犹豫地改变不同的压缩质量设置,策略,特别是快速压缩模块的阈值设置,如下所述: https : //github.com/expressjs/compression ,尤其是:

压缩阈值级别

由于您仅发送文本数据的几个字节作为正文,请尝试将阈值设置为低于1Kb的默认值。

对压缩前的响应主体大小的字节阈值考虑为响应,默认为1kb。 这是多个字节,字节模块接受的任何string,或者是假的。

(引自明文压缩模块github页面)

HTTP压缩并不总是更快

请务必使用其他HTTPfunction,如HTTP Pipelining或接受的编码 (也在客户端),因为切换这些function可能会大大改变下载时间的结果。

IBM进行了一系列优秀的HTTPtesting,我build议您在这里阅读: http : //www.ibm.com/developerworks/library/wa-httpcomp/