Speculation Rules

Speculation Rules API はブラウザ標準の機能で、ページの事前レンダリングや事前プリフェッチをブラウザに指示します。

Speculation Rules API とは

Speculation Rules API は Chrome 109 以降で利用可能なブラウザ標準の API です。従来の <link rel="prefetch"> と異なり、JSON ベースのルール定義で「どのページを」「どの積極度で」事前読み込みするかを宣言的に指定できます。特にプリレンダリング(事前レンダリング)を使うと、リンク先のページを完全にレンダリングした状態でメモリに保持するため、遷移がほぼ瞬時(0ms に近い LCP)になります。

ノート

Speculation Rules API は Chrome / Edge 109 以降で対応しています。非対応ブラウザでは <script type="speculationrules"> は無視され、サイトに影響を与えません。

設定画面

Speculation Rules 設定タブ
図: Speculation Rules 設定タブ

設定項目の詳細

事前レンダリング speculation_prerender

事前プリフェッチ speculation_prefetch

Eagerness(積極度) speculation_eagerness

4段階の積極度を設定可能:

レベル 説明 動作タイミング 対象ページ数の目安
immediate 即座に実行 ルール検出時 最大約10ページ(Chrome 130時点)
eager 積極的に実行 ルール検出時(やや控えめ) 最大約10ページ(Chrome 130時点)
moderate 適度に実行 ホバー時(200ms) 最大2ページ(Chrome 130時点)
conservative 控えめに実行 クリック直前(mousedown/pointerdown) 1ページ(Chrome 130時点)

ヒント

初めて使う場合は moderate(デフォルト)から始めることをお勧めします。サイトの動作を確認してから eagerimmediate に変更してください。

除外パターンとの連携

除外URLパターンで指定した glob パターンは、Speculation Rules の not.href_matches に自動的に変換されます。これにより、除外対象のページは事前レンダリング・プリフェッチの対象からも自動的に外れます。

ノート

正規表現パターンは Speculation Rules API がサポートしていないため、glob パターンのみが除外に適用されます。正規表現で除外しているページがある場合は、glob パターンでも指定してください。

出力されるHTML

本機能を有効にすると、ページの <head> 内に以下のような JSON が出力されます。

<script type="speculationrules">
{"prerender":[{"where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-admin/*","*/cart/*"]}}]},"eagerness":"moderate"}]}
</script>

予測プリフェッチとの違い

項目 予測プリフェッチ Speculation Rules
実装方式 JavaScript (<link rel="prefetch">) ブラウザ API (<script type="speculationrules">)
レンダリング なし(ダウンロードのみ) あり(prerender時)
ブラウザ対応 全モダンブラウザ Chrome/Edge 109+
トリガー JS で動的に制御 ブラウザが宣言ルールで制御
メモリ消費 少ない 多い(prerender時)
効果 ページ読み込み高速化 ほぼ瞬時のページ遷移

ヒント

両方を併用することで、Speculation Rules 非対応ブラウザには予測プリフェッチでカバーし、対応ブラウザではより高速な Speculation Rules が適用されます。