Webパフォーマンス虎の巻 - Qiita という記事を見ていて、Request Map Generator というツールを知りました。
Resouce Hints API で 先読みするドメインの判断に使えそうでしたので、数ページデータを取得してみました。
使い方と、結果を記載します。
Request Map Generator について
Request Map Generator にアクセスして、解析したい URL を入力すると、以下のような図が生成されます。
解析対象のサイトから、どのドメインへのアクセスがあるのかが視覚化されます。
円の大きさ、ドメイン間の線の種類、円の色 にはそれぞれ以下の意味があります。
-
円の大きさ
コンテンツのバイト数のが大きければ、円のサイズ大きくなります。 -
ドメイン間の線の種類
link による単純なリソース読み込み、リダイレクト、iframe による読込などが示されます。 -
円の色
読み込み先のドメインがどのようなカテゴリのドメインかが示されます。
Google Analytics であれば、Web Analyticsになります。
Resouce Hints API を付与するドメインの選定、HTML タグの追加
計測対象ページ、計測データ、追加した HTML タグについて記載します。
計測対象ページ
Request Map Generator では図以外に CSV でデータが取得できます。
以下、3 URL を対象に Request Map Generator を実行し、CSV を取得、どのページでもアクセスがあるドメインに対して dns-prefetch meta タグを付与します。
- https://www.monotalk.xyz
- https://www.monotalk.xyz/blog/Calculate-the-gamma-distribution-with-Python/
- https://www.monotalk.xyz/about/
計測データ
上記の 3 URL の CSV を取得、Gist に UP しました。
Request Map Generator の実行結果
CSV ファイルをディレクトリに配置して、以下のコマンドを実行すると、共通して含まれるドメインのみ抽出することができます。
cat *.csv | cut -d "," -f 1 | sort | uniq -d
adservice.google.com
ampcid.google.com
cdnjs.cloudflare.com
fonts.gstatic.com
googleads.g.doubleclick.net
pagead2.googlesyndication.com
stats.g.doubleclick.net
uh.nakanohito.jp
www.google-analytics.com
www.google.com
www.googletagmanager.com
www.googletagservices.com
host
www.monotalk.xyz
host は CSV のヘッダ、www.monotalk.xyz は自サイトなので除去し、dns-prefetch するドメインは以下になります。
adservice.google.com
ampcid.google.com
cdnjs.cloudflare.com
fonts.gstatic.com
googleads.g.doubleclick.net
pagead2.googlesyndication.com
stats.g.doubleclick.net
uh.nakanohito.jp
www.google-analytics.com
www.google.com
www.googletagmanager.com
www.googletagservices.com
追加した HTML タグ
以下のタグを追加しました。
<meta content="on" http-equiv="x-dns-prefetch-control"/>
<link crossorigin="anonymous" href="//adservice.google.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//ampcid.google.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//cdnjs.cloudflare.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//fonts.gstatic.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//googleads.g.doubleclick.net" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//pagead2.googlesyndication.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//stats.g.doubleclick.net" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//uh.nakanohito.jp" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//www.google-analytics.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//www.google.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//www.googletagmanager.com" rel="preconnect dns-prefetch"/>
<link crossorigin="anonymous" href="//www.googletagservices.com" rel="preconnect dns-prefetch"/>
これでどれくらいパフォーマンスに寄与したかは、スケジュール実行しているパフォーマンス計測結果で確認しようかと思います。
参考
以下、記事作成中に参考にしました。
- Resource Hints
- Resource HintsでpreconnectとDNS-Prefetchを併記 - Qiita
- Request Map Generator | Trent Walton
- How to Find the Third-Parties on Your Site – Simon Hearne’s blog
- Resource Hints API でリソースの投機的取得 | blog.jxck.io
- ソーシャルメディアの読み込みはDNSプリフェッチのまとめ設定がお得 | ゆっくりと…
- コマンドラインで和集合とか積集合とか - てきとうなメモ
以上です。
コメント