LoginSignup
12
11

More than 5 years have passed since last update.

PhantomJSでWebサイトの表示スピードを測る話

Posted at

動機

  • Webサイトのどこかが遅いとか、分かりやすいデータを出力したい。
  • 監視ツールからも指標として採用できる値が取得したい。

とにかくExampleが優秀

やりたいことは大したことも無いし、Exampleのツギハギだけで目的は達成できそう。

まずは起動

それぞれの環境にバイナリもあるし、導入もすぐ出来ると。
自分はMacから。

このコードを使って、サイト自体のスピードを測ってみる

$ phantomjs loadspeed.js http://www.yahoo.co.jp
Page title is Yahoo! JAPAN
Loading time 836 msec

こいつ動くぞっ

ページの要素に踏み込む

このnetsniff.jsはHARフォーマットのログを出力できるらしい。この中から今回必要な情報のみTSVで出したかったので以下のように修正

    page.open(page.address, function (status) {
        var har;
        if (status !== 'success') {
            console.log('FAIL to load the address');
            phantom.exit(1);
        } else {
            page.endTime = new Date();
            page.title = page.evaluate(function () {
                return document.title;
            });
            har = createHAR(page.address, page.title, page.startTime, page.resources);
            // ###ここから###
            har.log.entries.forEach(function(item) {
                console.log(item.time + "\t" + item.response.content.size + "\t" + item.request.url);
            });
            // ###ここまで###
            //console.log(JSON.stringify(har, undefined, 4)); // コメントアウトしただけ
            phantom.exit();
        }
    });

早速実行してみると...

$ phantomjs netsniff.js http://www.yahoo.co.jp
187 140535  http://www.yahoo.co.jp/
152 163993  http://www.yahoo.co.jp/javascript/fp_base_bd_ga_6.0.35.js
52  5866    http://k.yimg.jp/images/top/sp2/clr/141224/1.css
72  2928    http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png
96  4715    http://lpt.c.yimg.jp/im_siggY7XRJ7NJI0t3mxoqSKGfLQ---x120-y120/amd/20150305-00000041-jijp-000-view.jpg
197 34275   http://s.yjtag.jp/tag.js#site=2wzBV9u
116 8400    http://k.yimg.jp/images/top/sp2/cmn/pic_all-141205.png
69  331 http://k.yimg.jp/images/top/sp2/clr/141224/1.png
71  188 http://k.yimg.jp/images/top/sp2/uhd/homepage_bg-120123.png
70  1314    http://k.yimg.jp/c/icon/s/bsc/2.0/bookstore20.gif
70  253 http://k.yimg.jp/c/icon/s/bsc/2.0/movies20.gif
70  403 http://k.yimg.jp/c/icon/s/bsc/2.0/fortune20.gif
109 406 http://k.yimg.jp/c/icon/s/bsc/2.0/loco20.gif
91  2707    http://k.yimg.jp/images/evt/social-action/disasterPromo/201502volunteer.jpg
111 5551    http://k.yimg.jp/images/top/sp2/cb/2015/0305_lohaco.png
113 5073    http://k.yimg.jp/images/streaming/free/spotlight/1503/05_01.jpg
112 5397    http://k.yimg.jp/images/video-topics/rec/1503/05_e06.jpg
129 6497    http://k.yimg.jp/images/gyao/ytopimg/20150302/026.jpg
148 4116    http://k.yimg.jp/images/gyao/ytopimg/20150225/005_s.jpg
150 4358    http://k.yimg.jp/images/gyao/ytopimg/20150304/004_s.jpg
133 3129    http://k.yimg.jp/images/gyao/ytopimg/20150302/045_s.jpg
134 4511    http://k.yimg.jp/images/gyao/ytopimg/20150302/033_s.jpg
134 434 http://k.yimg.jp/images/weather/general/transparent_s/moon_clouds_af.gif
148 343 http://k.yimg.jp/images/weather/general/transparent_s/clouds.gif
159 4587    http://k.yimg.jp/images/premium/contents/bnr/2015/0224_shp/50x50.jpg

"時間(タブ)サイズ(タブ)URL"と欲しい情報が取れるようになった。

最後に

以前Webサイトのスクリーンショットを撮る場面でPhantomJSというモノは知っていたが実際に使うのは今回が初めてだったのだけど、これは便利ねぇ

Travis CIにビルトインされてることも知った。今度使おうと思う。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11