2013-03-28 6 views
18

Ich bin neu in phantomjs, versuche es auf einem Standard-CentOS-Server (mit httpd usw. installiert, aber keine geänderten Einstellungen abgesehen von Nameserver auf 8.8.8.8 und 8.8.4.4 eingestellt).Phantomjs lädt Seiten langsam

Ich benutze die Standard-Datei loadspeed.js (sei es umbenannt). Die Seitengeschwindigkeit scheint jedoch extrem langsam zu sein. Hier ein Beispiel:

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

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

Wenn ich eine URL geladen werden auf dem Server (wie http://something.be), Ladezeit ist 141msec:

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

Hat jemand eine Ahnung, was meine Verbindung verursacht dies langsam sein? Die Verbindung selbst ist in Ordnung, wget dauert Sekunden, um eine Datei von mehreren MB herunterzuladen.

Auch, wenn ich genau das gleiche Skript auf OSX lokal für Google laufen, dann ist dies die Ausgabe:

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

Antwort

23

es gefunden - scheint wie ipv6 der Täter war.

ich es vorübergehend, indem Sie die deaktiviert folgend:

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

Testing bestätigt:

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

Einstellung der IPV6-Einstellung auf "Nur Link-local" funktionierte für mich. Wie nervig. – steakchaser

+3

Wow, ich bin gespannt, wie du diese Eigenart gefunden hast. Sie sollten eine Goldmedaille für diesen Fund erhalten. Ich ging von 48 Sekunden auf 1 Sekunde. Vielen Dank – JavierIEH

+1

Einige Kenntnisse der Vernetzung und Kenntnisse der Tatsache, dass ipv6 der Box nicht zugewiesen wurde, halfen. :) – QuintenVK

8

Nun, in meinem Fall, die Seite für einige GET-Anfragen wartet und war nicht in der Lage zu erreichen der Server der Anfragen und es hat lange gewartet. Ich konnte es nur herausfinden, wenn ich die entfernte Debuggeroption verwendete.

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

und innerhalb der loadspeed.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)); 
}; 

Datei und dann localhost Laden: 9000 in jedem Webkit-Browser (Safari/Chrom) und sehen die Konsolenprotokolle, wo ich es für wartete herausfinden konnte, einige fehlgeschlagene Anfragen für eine lange Zeit.

TO THIS BYPASS - REDUZIERUNG DER TIMEOUT:

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

und Dinge waren sehr schnell danach. Hoffe, das hilft