新しい記事を公開するたびに PageSpeed Insights でサイトのスピードを測定していますが、「改善できる項目」には必ず「適切なサイズの画像」項目が表示されて、「アイキャッチ画像」のサイズを この記事 の通り修正しておきますが、
その中、時々「改善できる項目」に別の指摘事項が現れる場合もあったりします。今日は「レンダリングを妨げるリソースの除外」について、修正した内容を共有します。

条件
- Cocoon テーマに設定を追加します。
一般的な除外方法
これから進めるには、
上図のようにレンダリングを妨げるリソースの URL が必要です。ご自身のサイトを PageSeed Insights
で測定してその URL をメモって置いてください。
HTML の一般的な構造は▼の通りです。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> </html>
▲ の <head>
</head>
の間に <script>
や <link>
タグを使用する三つの方法があります。PageSeed Insights
では下記のような書き方をしないリソースをブロックしてしまいます。
<link rel="preload" href="" as="script">
<script src="" async></script>
<script src="" defer></script>
※ <link>
タグの詳細は rel=”preload” によるコンテンツの先読み をご参考ください。
※ <script>
タグの詳細は <script>:スクリプト要素
をご参考ください。
ウェブページが正常に表示されるためには、様々なリソース ( 例:スタイルシートや Javascrip など ) が必要です。そのリソースをウェブページのコンテンツ ( 例:ブログ記事など ) を表示する前に読み込む (preload
) のか、コンテンツを表示してから読み込む (async
defer
) のか、を決める必要があります。( 基本的に先読み )
リソースをどのタイミンングで読み込めば良い?
それは、Chrome DevTools を利用することで確認できます。
ご自身のレンダリングを妨げるリソースの URL が先読みすべきか、後でも良いのかみて行きます。
Chrome ブラウザでご自身のサイトにアクセスした状態で、⌘ ⌥ I
を押すと DevTools が立ち上がります。(もしくは、Chrome「表示」>「開発/管理」>「デベロッパー ツール」をクリック )
下記のような順番にしたがって、Coverage
タブを開きます。

▼ Coverage
タブが表示されたら、下図の矢印のところにあるリロードボタンをクリックしてみてください。

▼ のような画面に変わります。
ご自身のレンダリングを妨げるリソースの URL を見つけましょう。

▼ 見つかったら、右側の「Unused Bytes」と赤色、緑色 部分に注目してください。

右側に表示されているカラーの意味は以下の通りです。
- 緑 ( 重要 ):最初のペイントに必要なスタイル。 ページのコア機能にとって重要なコード。
- 赤 ( 重要ではない ):すぐに表示されないコンテンツに適用されるスタイル。 ページのコア機能で使用されていないコード。
そうですね。
すなわち、ここではリソースの未使用率は 1番目のファイル 59.8%、2番目のファイル 56.7% なのでブログ記事が表示された後でこれらのリソースを読み込めば良い!とのことがわかりました。
後で読み込むには <script>
タグに async
か defer
を利用します。
該当リソースを除外する
最初にメモっていたご自身のレンダリングを妨げるリソースのURLをそれぞれsrc=""
の中にコピぺして、HTML に挿入するスクリプトを ▼ のように作成します。
ここでは defer
を適用してみます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js?ver=1.12.4" defer></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.4.1/jquery-migrate.min.js?ver=1.4.1" defer></script>
ちなみに、DevTools の Caverage
タブに表示された他の URL も除外したい時には下記の順番で該当 URL をコピーして上のようなスクリプトを作成することで除外できます。

作成したスクリプトをメモっておいて、WordPress の管理画面にアクセスしてください。「Cocoon 設定」>「アクセス解析・認証」タブ >「その他のアクセス解析・認証コート設定」まで移動します。
「ヘッド用コード」欄にメモっていたスクリプトをペーストして、「変更をまとめて保存」ボタンをクリックします。

上図のよく見ると、preload
と defer
が適用されているのがわかると思います。何故かcloudflare ドメインのリンクは defer
も async
も効きませんでしたので preload
して解決しています。
このように一回の設定で終了ではなく、PageSpeed Insights で合格するまでは設定を変更しながらテストすることを推奨します。
PageSpeed Insightsで確認する
保存したら、Cache 系のプラグインを使用中であれば Cache をすべて削除します。
確認するブラウザもリロード ( Chrome なら ⇧ ⌘ R
) してから測定してみてください。
▼ のように「合格した監査」に「レンダリングを妨げるリソースを除外」が表示されれば OK です。

コメント