http.get和http.request都非常慢?

时间:2016-06-30 09:05:40

标签: javascript node.js

当尝试使用以下代码加载简单的JSON API时,我注意到速度非常慢:

function get(url, callback) {
    http.get(url, function(r) {
        var body = "";
        r.on('data', function(d) {
            body+=d;
        });
        r.on('end', function() {
            callback(body, false)
        });
    }).on('error', function (err) {
        callback(null, err.message.code)
    });
}

或使用以下代码发布:

function post(url, post_data, callback) {
if (!post_data) post_data = "";
var Proto = url.split("://")[0]+":";
var Host = url.split("://")[1].split("/")[0];
var Path = "/"+url.split("://")[1].replace("/", "#CHECK").split("#CHECK")[1];
var req = http.request({
    host: Host,
    port: '80',
    path: Path,
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': Buffer.byteLength(post_data)
    }
}, function(r) {
    var body = '';
    r.on('data', function(d) {
        body += d;
    });
    r.on('end', function() {
        callback(body);
    });     
}).on('error', function (err) {
    callback(null, err.message.code)
});
req.write(querystring.stringify(post_data));
req.end();
}

两者都需要花费很长时间才能完成,通常在每个请求上平均我大约150-300毫秒的小文件,这将花费我80毫秒来加载谷歌Chrome。为了测试,我使用谷歌浏览器进行基准测试并发送了简单的获取和发布请求,但每个请求在节点中收到响应的时间比在谷歌浏览器中长2到3倍。在做了一些研究后,我发现它可能是由于Chrome与大多数浏览器一样,使用Connection:"keep-alive"标题,但在标题中添加它似乎没有任何影响。我已经设置了http.globalAgent.maxSockets = 100000;所以我知道这不是问题所在。我怎样才能加快我的要求?

仍然没有找到任何东西,如果有人知道如果有什么要加快的话请发表回复

0 个答案:

没有答案