使用Node JS和Express JS缓慢的HTTPS请求?
我有一个关于我在下面发布的代码的问题。 这个/ auth请求在平均值上是正常的吗? 在使用Google Chrome检测面板时,显示500 – 800毫秒(等待TTFB)? 使用模块请求执行https请求时,我会得到相同的结果。 我平均。 直接在浏览器中inputhttps://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'); }); }); });
– 时间的快照 –
caching:
- 停滞: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。
几乎可以肯定的是,所有的时间都花在与Facebook开放和谈判SSL上。 每次向服务器发送请求时,您当前的设置都必须这样做。 一般来说,您希望使用类似https://www.npmjs.com/package/agentkeepalive的方法来保留预先协商的SSL套接字的连接池。 浏览器做到这一点,这就是为什么从浏览器直接到Facebook更快。
在路线外部创build代理,然后在您的路线中将代理作为选项对象的一部分传递。