KUSANAGI MAGAZINEで「きもおたわーどぷれす。」が紹介されました! クリックで公式サイトが開きます。

「クリティカルなリクエストの深さの最小化」を攻略する ~Pagespeed Insights対策

この記事は約5分で読めます。
記事内に広告が含まれています。

「クリティカルなリクエストの深さの最小化」って何!?
どんな対策すればいいのか見当もつかない!

スポンサーリンク

「クリティカルなリクエストの深さの最小化」って?

みんな大好きGoogleのPagespeed Insights(PSI)。
その中でも難解な項目の一つが「クリティカルなリクエストの深さの最小化」ではないでしょうか?

Googleのページには次の通り書いてます。

クリティカル リクエスト チェーンは、クリティカル レンダリング パス(CRP)の最適化技術のコンセプトの 1 つです。 CRP を考慮してリソースに優先度を設定し、読み込む順序を指定すると、ブラウザでより早くページが読み込まれるようになります。

引用:Google Developers「クリティカル リクエスト チェーン」

どこの記事を見ても、こうした定義の話ばかり。
具体的に何をすればいいかは書いてません。
おかげで解決策を探るのに苦労しました。

本稿では私がどうやってこの項目をクリアしたか記してみたいと思います。
全てのケースに当てはまるというわけではないでしょうが、参考にはなるでしょう。

スポンサーリンク

「クリティカルなリクエストの深さの最小化」問題の検討

私はどのリソースで出ていたか

当サイトで出ていたリソースは2つ。
両方ともwebフォントです。

実はこのこと自体が考えるためのヒントです

攻略するためのキーワードは「優先度」と「順序」

webフォントで指摘された。
そして定義には「優先度」と「順序」。

とくれば、

対策として思いつくのはpreloadじゃないかしら?

link rel=preloadとは?

preloadには、指定したリソースを先読みさせる役割があります。
以下、Firefoxの開発元Mozillaによる説明です。

<link> 要素の rel 属性で preload を指定すると、 HTML の <head> 要素内で読み込みリクエストを宣言し、ページのライフサイクルの早期の、ブラウザーの主なレンダリング機構が起動する前に読み込みを始めたい、すぐに必要なリソースを指定することができます。これにより、そのリソースがより早く利用でき、ページのレンダリングがブロックされにくくなり、性能が向上します。

引用:Mozilla「rel=”preload” によるコンテンツの先読み」

うまく使えば高速化に役立ちます。
そしてPSIにおいてもpreload自体が「キー リクエストのプリロード」という指摘項目になっています。

しかし私の場合は「キーリクエストのプリロード」でwebフォントは指摘されませんでした。
一見関係ないように見えます。

スポンサーリンク

「クリティカルなリクエストの深さの最小化」の具体的対処法

クリティカルリクエストチェーンにおいては「preloadを使え」というのではなく「preloadを用いるのが解決手段の1つ」という意味です。
具体的な対処法については本項目で述べます。

当サイトの状況を検討してみる

変更前のヘッダーへの記載は次の通り。

<link rel="preload" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.css" as="style">
<link rel="stylesheet" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.css" media="print" onload="this.media='all'">

webフォントのcssを非同期で読み込む技法です。

しかし、フォントファイルの方はpreloadしていなかった。
そのため、間隔が空いてしまっていたわけです。

つまり、

webフォントもプリロードすればいいわけね

webフォントをプリロードするための方法

しかし問題があります。

webフォントってブラウザで読み込むファイルが違くない?

ttf、woff、woff2とあるわけで。
だからこそ私もプリロードしようとは思っていませんでした。

しかしwoff2対応も広まった今、決め打ちしてもいいのではないか。
そう考えて、まずcssの@font-faceにおける順番を変更します。

@font-face {
font-family: 'hogefonts';
src: url('/font/hogefonts.woff2') format('woff2'),
url('/font/hogefonts.woff') format('woff'),
url('/font/hogefonts.ttf') format('truetype');
}

こう書けばwoff2から優先して読み込まれていきます。

その上で、woff2についてのみプリロードします。

<link rel="preload" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.woff2" as="font" type="font/woff2" crossorigin>

ヘッダーへの記載

hogefonts(仮)においては、ヘッダーへ次の通り記載します。

<link rel="preload" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.css" as="style">
<link rel="stylesheet" href="https://kimoota.net/wp-content/themes/hoge/hogefonts.css" media="print" onload="this.media='all'">

まずwebフォントファイルをプリロードで読み込む。
そしてwebフォントのcssを読み込む。
これでPSIからの警告が消えました。

実際にF12で滝を見ても、かなり早い段階でフォントが読み込まれています。

スポンサーリンク

まとめ

私のパターンはあくまで1つの例にすぎません。
恐らく色んなパターンがあるものだと思います。
ただ解決法を考えるヒントにはなるのではないでしょうか?

よろしければ参考にしてみてください

サイトを始めたい・引っ越したい方へ

おすすめレンタルサーバー「ConoHa WING」
Webサーバー処理速度 国内最速!
サイト管理・カスタマイズのタイパも抜群!
自動化AIのWEXALによって他社より負担を減らせます
各種キャンペーン施策によりコスパも抜群!
ConoHaに初めて入会かつ12か月以上のWINGパックなら
下のボタン経由で契約すると最大5000円の割引が受けられます

この記事を書いた人

素人の備忘録です。
素人がゆえにトラブルにぶつかりまくってきたので、同じように困った方の役に立てたらいいなと思ってます。
8年来のKUSANAGI推し。

元公安調査庁職員、発達障害(ADHD)

天満川 鈴をフォローする
カスタマイズ&プラグイン
タイトルとURLをコピーしました