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
Ответы
Ответ 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
и после этого все было очень быстро. Надеюсь, что это поможет