【问题标题】:PhantomJs uses several TCP connections when loading one pagePhantomJs 在加载一个页面时使用多个 TCP 连接
【发布时间】:2013-12-18 12:32:19
【问题描述】:

我使用 PhantomJs 爬取了一些网站,发现它在加载一个页面时打开了几个 TCP 连接。比如下面是我的try.js:

var args = require('system').args;
var page = require('webpage').create();
var url = args[1];
page.open(url, function(status) {
  var title = page.evaluate(function() {
    return document.title;
  });
console.log('Page title is ' + title);
//page.close();
});

我试过了

phantomjs try.js http://www.google.com

发现它使用了 4 个连接。我知道调用“page.close()”会关闭所有连接。但是如果我使用许多 phantomjs 进程,这样的问题仍然可能导致大量的并发连接。发生这种情况是因为 PhantomJs 不使用持久 HTTP 吗?有什么解决办法吗?

【问题讨论】:

    标签: javascript node.js phantomjs web-crawler


    【解决方案1】:

    听起来很正常。

    PhantomJS 支持 HTTP keep-alive(持久 HTTP 连接),并默认启用。 它可能只是为每台服务器打开 2 个(或更少)连接(根据规范应该如此),这就是您所看到的。

    要查看没有 keep-alive 的情况,请尝试:

    page.customHeaders = { 'Connection': 'close' };
    

    【讨论】:

    • 感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多