Подтвердить что ты не робот

Phantomjs медленно загружает страницы

Я новичок в phantomjs, пробуя его на стандартном сервере centOS (с установленным httpd и т.д., но никаких измененных настроек, кроме серверов имен, установленных в 8.8.8.8 и 8.8.4.4).

Я использую файл loadpeded.js по умолчанию (его переименовать). Однако скорость страницы очень низкая. Вот пример:

$ phantomjs phantomjs.js  http://www.google.com/
starting
Loading time 90928 msec

$ phantomjs phantomjs.js http://173.194.67.138/ #(one of google public ips)
starting
Loading time 30204 msec

Когда я загружаю любой URL-адрес сервера (например, http://something.be), время загрузки составляет 141 мсек:

 $ phantomjs phantomjs.js http://something.be
 starting
 Loading time 141 msec

Кто-нибудь знает, что заставляет мое соединение быть таким медленным? Само соединение прекрасно, wget занимает несколько секунд, чтобы загрузить файл с несколькими мегабайтами.

Кроме того, когда я запускаю то же самое script на OSX локально для Google, это результат:

 phantomjs phantomjs.js http://google.com/
 starting
 Loading time 430 msec
4b9b3361

Ответ 1

Нашел это - похоже, что ipv6 был виновником.

Я временно отключил его, выполнив следующее:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

Тестирование подтверждает:

$ phantomjs phantomjs.js http://google.com
starting
Loading time 230 msec

Ответ 2

Ну, в моем случае, страница ждала некоторых запросов GET и не смогла добраться до сервера запросов, и он долго ждал. Я мог только понять это, когда использовал опцию удаленного отладчика.

phantomjs --remote-debugger-port=9000 loadspeed.js <some_url>

и внутри файла loadpeed.js

page.onResourceRequested = function (req) {
    console.log('requested: ' + JSON.stringify(req, undefined, 4));
};

page.onResourceReceived = function (res) {
    console.log('received: ' + JSON.stringify(res, undefined, 4));
};

а затем загрузите localhost: 9000 в любом браузере webkit (сафари/хром) и просмотрите журналы консоли, где я могу понять, что он долго ожидал некоторых неудачных запросов.

ОБРАТИТЬ ЭТО - СНИЖИТЬ ВРЕМЯ:

page.settings.resourceTimeout = 3000; //in secs

и после этого все было очень быстро. Надеюсь, что это поможет