SNSシェアボタンとAdSenseがページ表示スピード(DOMContentLoadedとLoad)に与える影響を検証した

SNSシェアボタンとAdSenseが表示スピードにだいぶ悪い影響を与えている事は知っているのですが、急にそれがどれ程なのかが気になったので実験しました。まぁブログ運営上この2つを外すという選択はとれないのですが、純粋に知的好奇心によるものです。

第1回の今回は、DOMContentLoadedとLoad時間の影響を調べます。次回はGoogle PageSpeed Insightsのレポートを予定しています。

実験1. SNSボタンとAdSenseをひとつづつ外した影響

検証内容

当サイトのとある記事を対象に、以下の4つの状態を作ります。

  1. Before: SNSボタン(2箇所)とAdSense(3箇所)の両方表示
  2. After1: SNSボタンだけ外す
  3. After2: AdSenseだけ外す
  4. After3: SNSボタンもAdSenseも両方外す

ChromeのDeveloper Toolsを開いて、それぞれ10回スーパーリロードする。

ここを見ます。そして10回の数値の平均値を出しました。

なおDOMContentLoadedとLoadの定義は以下となります。

  • DOMContentLoadedイベントはDOMツリーの構築が完了した時点で発火される
  • 一方、loadイベントはDOMツリーに加えて画像やすべてのスクリプトが読み込まれた時点で発火される

DOMContentLoadとLoadの時間の比較

結果はこうなりました。

BeforeからAfterの値を引いたグラフはこうなります。それぞれの外部スクリプトがどれだけ表示を遅らせているかという意味になります。

分かる事として、

  • SNSボタンはDOMContentLoadedを重くする
  • AdSenseはLoadを重くする
  • SNSボタンとAdSenseそれぞれの影響は加算されるわけではない
  • Loadが最大2秒も縮まる!

という事のようです。

一応、10回分の結果を記しておきます。

DOMContentLoaded

#BeforeAfter1After2After3
1回目1.86s1.15s1.18s1.12s
2回目1.62s1.21s1.45s1.12s
3回目1.48s1.26s1.37s1.46s
4回目2.05s1.36s1.32s1.42s
5回目1.82s1.17s1.63s1.17s
6回目1.92s1.26s1.64s1.10s
7回目1.75s1.63s1.55s0.92s
8回目1.50s1.16s1.02s1.61s
9回目1.88s1.18s1.55s1.27s
10回目2.14s1.14s1.87s1.04s

Load

#BeforeAfter1After2After3
1回目3.26s2.09s1.65s1.25s
2回目2.92s1.97s1.87s1.29s
3回目2.67s3.53s1.86s1.62s
4回目4.22s2.48s1.70s1.57s
5回目3.35s2.22s2.16s1.50s
6回目3.08s2.35s2.02s1.21s
7回目2.88s2.98s2.25s1.26s
8回目2.84s2.13s1.57s1.79s
9回目5.09s3.32s2.13s1.39s
10回目3.47s3.32s2.33s1.11s

実験2. 重い記事と軽い記事の比較

同じ事を、重い記事と軽い記事で比較します。

  • 記事A(重い方): Code Highlights(JSが動く)有り+画像有り
  • 記事B(軽い方): 文字だけ
画像とJSありの重い記事と、文字だけの軽い記事

同様に、DOMContentLoadedとLoadの10回の平均値で比較します。なお上の実験1は記事A(重い方)でやっていましたので、数値は同じものを使います。

記事ごとのDOMContentLoadedとLoad時間(Before/After)

実験1と同様、BeforeとAfterの差分をとりました。

こんな感想を持ちました。

  • そもそも記事のコンテンツで無視できない影響がある(特にDOMContentLoaded)
  • 外部スクリプトの影響度合いは、記事のコンテンツの影響を受ける(もともと重いページの方が変化が大きい)。原理は不明。
  • 文字だけの記事であれば、頑張ればDOMContentLoadedが1秒を切る。何か嬉しい。

ちなみに、記事Aは以下のものです。

[intenallinkbyid 10811]

記事Bはこれです。

記事Bの計測結果はこうでした。

#DOMContentLoadedLoad
BeforeAfter3BeforeAfter3
1回目1.15s1.19s2.76s1.47s
2回目1.27s0.846s2.83s1.19s
3回目1.03s0.795s3.02s1.23s
4回目1.04s1.01s2.54s1.56s
5回目1.10s0.764s3.91s1.05s
6回目1.36s0.743s2.70s1.08s
7回目1.17s0.744s2.85s1.13s
8回目0.91s0.889s2.49s1.22s
9回目1.31s0.805s2.65s1.15s
10回目0.89s0.743s2.56s1.05s

結論

  • SNSボタンとAdSenseはやっぱりまぁまぁ重い。
  • SNSボタンはDOMContentLoaded時間に0.5秒くらい影響。
  • AdSenseはLoad時間に1.5秒くらい影響。
  • SNSボタンとAdSenseの両方を外しても、影響はそれぞれの累積とはならない。
  • 影響は記事自体のコンテンツに依存する。

次回、PageSpeed Insights編に続く。