Node JS和Express JS的HTTPS请求缓慢?

时间:2015-05-26 22:44:41

标签: node.js express

我对下面发布的代码有疑问。平均/ auth请求是否正常?使用谷歌浏览器检查面板时,显示500 - 800毫秒(等待TTFB)?使用模块请求执行https请求时,我得到相同的结果。我平均而言直接在浏览器中输入https://graph.facebook.com时获得60毫秒。

任何帮助表示赞赏!

app.get('/auth', function(req, res){

res.writeHeader(200, {'Content-Type': 'application/json'});

var options = {
    host: 'graph.facebook.com',
    port: 443,
    path: '/',
    method: 'GET',
};

https.get(options, function (resp) {
    var body = '';
    resp.on('data', function (chunk) {
        body += chunk;
    });

    resp.on('end', function () {
        console.log('Request ended.');
        res.end('Done');
    });
});
});

- 时间快照 -

缓存:

  • 停滞:0.458毫秒
  • 发送请求:0.286毫秒
  • 等待(TTFB):782.409 ms
  • 内容下载:0.994毫秒

清除浏览器数据后:

  • 停滞:0.695毫秒
  • DNS查询:15.062毫秒
  • 初次连接:48.599 ms
  • SSL:23.922
  • 发送请求:0.308
  • 等待(TTFB):645.622 ms
  • 内容下载:1.560 ms

..我在节点前使用Nginx。

1 个答案:

答案 0 :(得分:4)

您几乎肯定会花费所有时间与Facebook开放和谈判SSL。每次向服务器发送请求时,您当前的设置都必须这样做。通常,您希望使用类似https://www.npmjs.com/package/agentkeepalive的内容来保留预先协商的SSL套接字的连接池。浏览器这样做,这就是为什么从浏览器直接到Facebook的速度要快得多。

在路线外创建代理,然后在路线中,将代理作为选项对象的一部分传递。