2013-03-28 45 views
18

phantomjs'e yeni girdim, standart bir centOS sunucusunda çalışıyorum (httpd etc yüklü, ancak ad vericilerden ayrı olarak 8.8.8.8 ve 8.8.4.4'e ayarlanmış hiçbir değiştirilmiş ayar yok).Phantomjs, sayfaları yavaşça yükler

Varsayılan loadpeed.js dosyasını kullanıyorum (yeniden adlandırılmış olsun). Ancak, sayfa hızları çok yavaş görünüyor. Ben (örneğin http://something.be gibi) sunucudaki herhangi url yüklediğinizde

$ 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 

, loadtime 141msec geçerli:: İşte bir örnek

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

kimse benim bağlantı bu yavaş neyin sebep olduğu bir ipucu var mı? Bağlantı iyi, wget birkaç MB bir dosya indirmek için saniye sürer.

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

cevap

23

Buldum - ipv6 suçlu gibi görünüyor:

Ayrıca, Google için yerel OSX'te aynı komut dosyası çalıştırdığınızda, bu çıkıştır.

Ben çalıştırarak geçici olarak devre dışı aşağıdaki:

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

Test doğruluyor:

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

'un yardımcı olacağını umarım. IPV6 ayarını benim için "Yalnızca yerel bağlantı" olarak ayarladı. Ne kadar can sıkıcı. – steakchaser

+3

Vay, bu tuhaflığı nasıl buldunuz merak ediyorum. Bu bulmak için altın madalya almalısın. 48 saniyeden 1 saniyeye gittim. Çok teşekkürler – JavierIEH

+1

Bazı ağ bilgisi ve ipv6'nın kutuya atanmamış olması hakkında bilgi. :) – QuintenVK

8

Eh, benim durumumda, sayfa bazı GET istekleri için bekleyen ve ulaşmak mümkün değildi isteklerin sunucusu ve uzun süre bekletildi. Uzaktan hata ayıklayıcı seçeneğini kullandığımda bunu anlayabiliyordum. herhangi webkit tarayıcıda 9000 (safari/krom) ve ben bunu bekliyordu anlamaya nerede konsol günlükleri gördükten:

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

ve loadspeed.js iç

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

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

dosyasını ve sonra localhost yükleme

uzun bir süre için bazı başarısız istekleri.

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

ve işler bundan sonra çok çabuk: ZAMAN AŞIMI AZALTMAK -

bu atlamak için. Bu,