2013-03-28 7 views
18

私はphantomjsの新機能です。標準のcentOSサーバー(httpdなどがインストールされていますが、8.8.8.8と8.8.4.4に設定されているネームサーバー以外の設定は変更されていません)で試してみます。Phantomjsはページをゆっくり読み込みます

私はデフォルトのloadspeed.jsファイル(名前が変更されている)を使用しています。ただし、ページの速度は極端に遅く表示されます。ここでは例です:

$ 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 

私は、サーバー上の任意のURLをロードすると(例えばhttp://something.beなど)、ロード時は141msecである:

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

誰もが私の接続は、この遅いことが原因となるものを手掛かりを持っていますか?接続自体は問題ありません.wgetは数MBのファイルをダウンロードするのに時間がかかります。

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

答えて

23

はそれを見つけた - IPv6が犯人だったように思える:

はまた、私はGoogleのためにローカルOSX上の正確な同じスクリプトを実行すると、これが出力されます。

私は実行することにより、一時的に無効にし、次の

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 
+3

IPV6設定を「リンクローカルのみ」に設定すると効果があります。どのように迷惑。 – steakchaser

+3

うわー、私はこの気まぐれをどうやって見つけたのだろうかと不思議です。あなたはこの発見のために金メダルを得るべきです。私は48秒から1秒になりました。ありがとうございました – JavierIEH

+1

ipv6がボックスに割り当てられていなかったという事実に関する知識とネットワークの知識がありました。 :) – QuintenVK

8

まあ、私の場合には、ページには、いくつかのGETリクエストを待っていると到達することができませんでした。リクエストのサーバーとそれは長い間待っていた。リモートデバッガオプションを使用したときにしかわかりませんでした。任意のWebKitのブラウザで9000(サファリ/クローム)と私はそれを待っていた見つけ出すことができどこコンソールログを見て:

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

と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)); 
}; 

を提出して、ローカルホストのロード

いくつかのリクエストが失敗しました。

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

を、物事はその後非常に速かった:TIMEOUTを削減 -

THISをバイパスします。これが役に立ちますようにお願いします。

関連する問題