18

私はphantomjsが初めてで、標準のcentOSサーバーで試しています(httpdなどがインストールされていますが、8.8.8.8および8.8.4.4に設定されたネームサーバー以外の設定は変更されていません)。

デフォルトの 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など) をロードすると、ロード時間は 141 ミリ秒になります。

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

接続がこれほど遅くなる原因を知っている人はいますか? 接続自体は問題なく、wget は数 MB のファイルをダウンロードするのに数秒かかります。

また、OSX でまったく同じスクリプトを Google 用にローカルで実行すると、次のような出力が得られます。

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

2 に答える 2

23

それを見つけました-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
于 2013-03-28T14:34:55.180 に答える
8

私の場合、ページはいくつかの GET リクエストを待っていて、リクエストのサーバーに到達できず、長い間待機し続けました。リモートデバッガオプションを使用した場合にのみ、それを理解できました。

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

次に、localhost:9000 を任意の webkit ブラウザー (safari/chrome) にロードし、コンソール ログを確認して、失敗したリクエストを長時間待機していたことを確認しました。

これを回避するには - タイムアウトを減らします:

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

その後、物事は非常に迅速でした。お役に立てれば

于 2013-11-13T06:29:22.793 に答える