2012-10-30 22 views
15

PhantomJSでウェブページのスクリーンショットを撮ろうとしています。具体的には、espn.comthisの例から取り込む例を使用しています。私のコードは次のようになります。Phantomjsは動作しますが、非常に遅いです

var page = new WebPage(); 
    page.open('http://www.espn.com', function (status) { 
    page.render('fb.png'); 
    phantom.exit(); 
}); 
私は、どちらか私の端末またはコマンドプロンプトで、私のPhantomJSディレクトリに移動し、実行

:しかし、それが完了するまでに6-8秒かかり、

phantomjs shotty.js 

すべてが素晴らしい実行されます出力イメージ。それは普通ですか?これを達成するためのより速い方法が2秒以内に完了するようになっていますか?

私は両方のボックスは、RAM 8GBの、3.2 GHzのCPUを持っている、と私は22Mbp/sのダウンを取得していますし、1Mbpは/ speedtest.net

+1

デスクトップブラウザでページをレンダリングするのに約7秒かかりました。そう、それは普通のようだ。 – Quentin

+0

確認していただきありがとうございます! – Chris

+0

IPV6を無効にし、インターネットエクスプローラで「インターネットオプションをクリック」=>接続をクリック=> LAN設定をクリック> UNCHECK「設定を自動的に検出する」 – user956584

答えて

9

上に有これは正常であるのCentOSおよびWindows 7を使用しています。レンダリングを試みると、PhantonJSはloadイベントを発生させるためにpage.openイベントが待って、DOM全体がロードされたことを示します。

システムにローカルにespn.comをロードするとどうなるかを見てください。 DOMContentLoadedが終了するまでに2秒かかり、さらにreadyイベントが発生するまで〜7秒かかります。

enter image description here

+1

よろしくお願いいたします。ありがとうございます。 – Chris

+0

操作自体は、ページによって異なります。遅いのは、phantomjs.exeのプロセス作成です! – Legends

25

まあ、私の場合には、ページには、いくつかの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 milliseconds 

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

THISをバイパスします。これは

+1

+1と私はタイムアウトを制御することによって、ページ全体が読み込まれ、部分ページで作業するのを待つことができないことを追加したいと思っていました。 – Efreeto

+0

これは大きな助けとなりました。 +1 –

+0

これは完全で実用的な例ではありません。 – Myz

2

は、私は次のように働くだろうと思っていなかったのに役立ちます願っていますが、私にとってそれはやった(Windowsの場合):

Internet Explorerを開き>インターネットオプション>接続> LANの設定と「設定を自動的に検出」を無効

元投稿:https://plus.google.com/+MatthiasG%C3%B6tzke/posts/9v9BMCJj2k6

関連する問題