为什么节点https请求比http请求更快

我有下面的代码,我使用http和https url对邮件进行了性能testing。 结果竟然让我吃了一惊。 https请求performance更好。

var express = require('express'); var fs =require('fs'); var https = require('https'); var http = require('http'); var authTransaction = require('./routes/trans'); var app = express(); app.configure(function(){ app.use(express.logger('dev')); app.use(express.bodyParser()); }); var privateKey = fs.readFileSync(mykey.pem', 'utf8'); var certificate = fs.readFileSync('mycert.pem', 'utf8'); var passphrase ="blahblah"; var credentials = {key: privateKey, cert: certificate,passphrase:passphrase}; var httpsServer = https.createServer(credentials, app).listen(9090); var httpServer = http.createServer(app).listen(5000); app.get('/',function(req,res){ res.send("hello "); }) app.post('/trans', function(req,res){ var purchase= new Purchase(req.body); purchase.save(function(err){ if(err) { res.send({'error': 'An error occured'}); }else{ res.json({ "status": { "message": [ "Success" ] } }); } }); }); 

我跑了10个线程1小时,结果如下

结果:

NodeJS – https

 Test Min Max Avg Last Count Throughput Bytes BPS Trans 5 3017 12.69 7 47010 13.05 13961970 3878 

NodeJS – http

 Test Min Max Avg Last Count Throughput Bytes BPS Trans 17 3031 40.26 29 45326 12.59 13461822 3739 

任何人都可以在这里扔光吗?

当同一个客户端重新连接一次又一次时(参见这里 ),SSL握手会缩短,以便为您提供准确的图片,您需要从各种客户端进程和机器上进行testing。