バックフォワード キャッシュが Yahoo!JAPAN ニュース、モバイルでの収益が 9% 増加

Yuriko Hirota
Yuriko Hirota

バックフォワード キャッシュ(bfcache)は、すぐに前または次のページに移動できるようにブラウザを最適化する機能です。これにより、ユーザーのブラウジング エクスペリエンスが大幅に向上します。特に、前後のナビゲーションが多く発生するウェブサイトでのエクスペリエンスが向上します。

bfcache に関する web.dev の記事

Yahoo! 日本有数のニュース プラットフォームであるジャパン ニュースは、bfcache のヒット率を高めるために一丸となって取り組み、その結果としてユーザー エクスペリエンスとビジネスが大きく向上しました。具体的には、A/B テストを実施した結果、bfcache を使用するページで広告収入が 9% 増加したことがわかりました。

このケーススタディでは、Yahoo!日本ニュースは bfcache を阻害する要因を取り除き、ユーザー エクスペリエンスを大幅に改善しました。

bfcache の阻害要因の排除

bfcache は Chrome 86 以降で利用可能で、最新のすべてのブラウザで利用できます。ただし、bfcache を最大限に活用するには、ウェブサイトの潜在的な阻害要因を排除する必要があります。Yahoo! トラベルが日本ニュースが直面した問題:

  1. unload ハンドラの使用
  2. Cache-control ヘッダーでの no-store ディレクティブの使用

ウェブサイトの主な阻害要因を確認するには、[Chrome デベロッパー ツール] > [アプリケーション] > [バックフォワード キャッシュ]詳細)に移動するか、notRestoredReasons API を使用して、実際の使用状況に基づいて阻害要因を包括的に確認できます。

Yahoo!日本ニュースは以下の障壁を取り除きました。

CCNS は、どのような場合でもキャッシュに保存してはならないページを対象としています。ただし、CCNS のあるページは、CDN エッジサーバーやローカル キャッシュなどのキャッシュ技術の恩恵を受けることができないという注意点があります。

CCNS ヘッダーがある場合は、ウェブサイトに適した Cache-control 戦略について話し合う絶好の機会です。no-storeno-cache の主な違いは次のとおりです。

Cache-control: no-store Cache-control: no-cache
  • レスポンスをキャッシュに保存することは許可されていません。
  • そのため、レスポンスはリクエストごとに完全に取得されます。
  • 非公開のレスポンスに使用してください。
  • レスポンスは、使用するたびにサーバーで再検証されていれば、キャッシュに保存できます。
  • これは、毎回再検証する必要がある公開レスポンスである必要があります(たとえば、ニュース ウェブサイトのホームページなど。ただし、キャッシュ時間が極端に短いと、パフォーマンスが向上し、メインサーバーから作業がオフロードされます)。

Cache-control のオプションについて詳しくは、こちらのフローチャートをご覧ください。

bfcache の影響

bfcache の影響を測定するため、Yahoo!日本ニュースは 2 週間にわたり A/B テストを実施しました。1 つのグループには bfcache を修正したバージョンと、別のグループに bfcache を適用しないバージョンを配信しました。有意な結果を得るために、かなりの量のトラフィックがある URL パスを選択しました。その他の見た目や機能面では、両バージョンに違いはありませんでした。

こちらの動画では、bfcache を使用した場合と使用していないウェブサイトを比較しています。bfcache が有効になっているウェブサイトは、「戻る」または「進む」ナビゲーションで非常に高速に読み込まれることがわかります。

真に有望なのは、bfcache を有効にしたグループでは、特にモバイル デバイスでページビューと広告収入が大幅に増加したことです。

Yahoo! トラベルによるbfcache A/B テストを実施しました。(詳しくはケーススタディの記事をご覧ください)。

指標 増加率(モバイル) 増加率(パソコン)
bfcache のヒット率 +54.03 ポイント(0.04% → 54.07%) +47.28 ポイント(0.02% → 47.30%)
ページビュー +2.26% +0.65%
広告収益 +9.0% +0.6%

bfcache を使用してページ間の「戻る」または「進む」が瞬時に行われると、ユーザーがページに滞在する時間が長くなる傾向があるため、広告ビューが増え、広告収入の増加につながります。

bfcache によりウェブサイトのシームレスなユーザー エクスペリエンスが向上

ページが瞬時に読み込まれると、ナビゲーションがよりシームレスになります。

Yahoo!主要なユーザー ジャーニーのひとつを以下に挙げます。

  1. 記事一覧に移動
  2. 記事をクリックして読む
  3. 記事リストに戻る
  4. 他の記事をクリックして読む

bfcache が導入される前は、ユーザーは記事を読み終え(ステップ 2)、記事の一覧ページが再び読み込まれるのを待つ必要がありました。これは、単に記事リストに戻って別の記事を選びたいユーザーにとって、煩わしさの要因となる可能性があります。

「戻る」ナビゲーションで妨げとなったもう 1 つの原因は、スクロール位置でした。実際には、後方ナビゲーションが発生したとき、ブラウザはスクロール位置の復元を試みます。しかし、動的に追加された広告やその他のレイアウト変更により、スクロール位置が誤って復元されることが多く、ユーザーが方向を見失ったり、ページから離れたりする可能性があります。後方ナビゲーションに bfcache が搭載されている場合は、スクロール位置は直ちに正しく復元されます。

記事から記事一覧ページへのバックワード ナビゲーションの 2 枚のフィルムストリップ。上は bfcache で処理されるプロセスのフィルムストリップで、0.3 秒かかります。一方、下は bfcache なしで処理している同じプロセスのフィルムストリップで、3.3 秒かかります。

bfcache を使用することで、ユーザー ジャーニーの煩わしさが解消されました。ユーザーはすぐに記事一覧ページに戻り、別の記事を選択して読むことができます。記事一覧ページの読み込みを待つ必要はありません。

ユーザーが、ある記事を直接閲覧し、その後別の記事をブラウジングする場合も同様です。

記事から記事一覧ページへのバックワード ナビゲーション フロー(bfcache ありとなし)を示すアニメーション画像。bfcache を使用すると、後方ナビゲーションが高速になるだけでなく、スクロール位置が正確に維持されます。bfcache がないと、これらの保証は行えません。

簡単に言えば、Yahoo! トラベルで bfcache を使用するメリットは、ニュース速報:

  • ページビュー数の増加: ページが bfcache でキャッシュされていると、ユーザーがウェブサイト内を移動する可能性が高まりました。
  • 収益の増加: セッションあたりのページビュー数が増加した結果、広告の表示回数が増加し、bfcache を使用していないテストグループと比較して、モバイルでの収益が 9% 増加しました。

おわりに

つまり、bfcache はウェブサイトを即座に作成できるだけでなく、全体的なユーザー エクスペリエンスの摩擦を減らし、ウェブサイト内でのエンゲージメントを高めることにもつながります。

Chrome チームは常に bfcache の阻害要因について調査しています。特に、この記事で紹介した 2 つの理由は、bfcache が使用されない一般的な理由です。将来的には、これによって bfcache の使用が妨げられることはありませんが、それまで待つ必要はありません。bfcache のブロッカーを確認して、一般的なパターンとあまり一般的でないその他のパターンを避けることで、bfcache のメリットを享受できます。