2013-12-18 3 views
1

Я использовал PhantomJs для сканирования некоторых веб-сайтов и обнаружил, что он открывает несколько TCP-соединений при загрузке даже одной страницы. Например, следующий мой try.js:PhantomJs использует несколько TCP-соединений при загрузке одной страницы

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? Любые решения?

ответ

3

Звучит нормально.

PhantomJS поддерживает HTTP keep-alive (постоянные HTTP-соединения) и включает его по умолчанию. Возможно, это всего лишь открытие 2 (или меньше) соединений на сервер (как предполагается, согласно спецификации), и это то, что вы видите.

Чтобы увидеть, что это такое, не держать-жив, попробуйте:

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

Спасибо за ваш ответ. – user3115181

Смежные вопросы