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

use*_*248 1 node.js express

我对下面发布的代码有疑问。该/ auth请求在avg上正常吗?在使用Google Chrome检查面板时显示500-800毫秒(正在等待TTFB)?使用模块Request来执行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');
    });
});
});
Run Code Online (Sandbox Code Playgroud)

-定时快照-

已缓存:

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

清除浏览器数据后:

  • 失速:0.695毫秒
  • DNS查找:15.062毫秒
  • 初始连接:48.599毫秒
  • SSL:23.922
  • 请求发送:0.308
  • 等待(TTFB):645.622毫秒
  • 内容下载:1.560毫秒

..,我在节点前使用Nginx。

log*_*yth 5

几乎可以肯定,您花了所有时间与Facebook进行SSL协商。每次将请求发送到服务器时,当前的设置都必须这样做。通常,您希望使用https://www.npmjs.com/package/agentkeepalive之类的东西来保留预先协商的SSL套接字的连接池。浏览器会这样做,这就是为什么从浏览器直接到Facebook如此之快的原因。

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