在Node中执行HTTPS与HTTP get请求的延迟时间为150毫秒

时间:2014-12-09 05:35:07

标签: node.js https delay

我不太了解node.js中的https模块是如何工作的,所以如果你们中的任何一个人能够回答这个问题,那就太棒了。

我在一个小应用程序中注意到,在发出任何实际请求之前,HTTPS.get(...)函数需要大约150ms才能从头开始执行。这就是我所说的:

var http = require('http');
var https = require('https');

console.time("Begin");

function request() {
    console.timeEnd("Begin");
    var myvar = https.get("https://www.fiadkbjadfklblnfthiswebsidedoesnotexist.com", function(res) {
        });
    console.timeEnd("Begin");
    }

request();

当我使用&#39; https.get&#39;时,控制台说在代码开始对get请求做任何事情之前大约已经过了150ms。但是当我使用&#39; http.get&#39;延迟小于<5ms。

我的问题是,究竟是什么造成了150毫秒的延迟,无论如何都要减少它?我确定它不是ssl握手,因为即使我输入一个不存在的网站,这种延迟也会发生。如果有可能在程序中更早地编写代码,那么当我执行https.get()请求时,它就不会有这么长的启动时间。

1 个答案:

答案 0 :(得分:0)

您在代码中多次使用console.timeEnd('Begin')

从节点v6.0.0开始,timeEnd()删除计时器以避免泄漏计时器

因此,当您首先调用console.timeEnd('Begin')时,它会删除计时器,而在第二次调用console.timeEnd('Begin')时,它将找不到对它的引用

如果要为不同的问题使用2个计时器,则可以创建多个标签,但请确保每个timeEnd()仅写一次time()