Google が stale-while-revalidate で広告パフォーマンスを向上させた方法

サードパーティ リソースの読み込みを高速化して収益を増やす方法をご確認ください。

Jonathon Imperiosi
Jonathon Imperiosi

このケーススタディでは、サードパーティ リソースのパフォーマンスを改善することでビジネス指標を高めることができる方法について説明します。以前の調査では、広告のレイテンシの増加によるコストが測定されましたが、この調査では、実際のパフォーマンスの向上の価値が示されています。

0.5%

パブリッシャー様の収益の伸び

2%

広告スクリプトの初期読み込みが増加

出典: Google 内部データ、2019 年 6 月~7 月

背景

Google パブリッシャー タグ(GPT)は、ウェブでディスプレイ広告をリクエストして表示する Google アド マネージャーの広告タグ スクリプトです。GPT チームは、GPT にシンプルな stale-while-revalidate HTTP ヘッダーを実装することで、パブリッシャー パートナー向けの Google ディスプレイ広告の速度とパフォーマンスを改善しました。この手法は、最新のコードよりもスクリプトをできるだけ早く読み込むことが重要である他のシナリオにも適用できます。

問題

GPT は、ブートストラップ スクリプト gpt.js としてデプロイされます。このスクリプトには、15 分という短い有効期間(TTL)が設定されます。この短い TTL により、スクリプトをすばやく更新またはロールバックできます。読み込まれると、gpt.js は TTL が長い追加の実装スクリプトをリクエストして読み込みます。

15 分間の TTL が期限切れになると、キャッシュ内の gpt.js のバージョンが古くなり、再検証が必要になります。以前は、この再検証プロセスでは、同期ネットワーク リクエストを実行してスクリプトの新しいコピーを取得していたため、最初の広告リクエストにレイテンシが発生していました。

ソリューション

stale-while-revalidate 属性は Cache-Control ヘッダーで使用され、アセットが非同期で再検証されている間、キャッシュが古いアセットを使用できる追加の期間を定義します。これにより、デベロッパーは即時性(キャッシュに保存されたコンテンツをすぐに読み込む)と新しさ(キャッシュに保存されたコンテンツの更新が今後使用されるようにする)のバランスを取ることができます。

Google ディスプレイ広告の事例紹介

GPT チームは、ブラウザが stale-while-revalidate を実装することを見越して、2016 年に gpt.js HTTP レスポンスにこの Cache-Control ヘッダーを追加しました。

cache-control: private, max-age=900, stale-while-revalidate=3600

この設定では、キャッシュに保存された前の値から 15~60 分後に gpt.js がリクエストされた場合、キャッシュに保存された値が古くても、その値がリクエストの処理に使用されます。同時に、バックグラウンドで再検証リクエストが送信され、今後使用するためにキャッシュに新しい値が入力されます。

Chrome では、バージョン 75 で stale-while-revalidate をすべてのトラフィックの 99% にロールアウトし、影響を確認するためにトラフィックの 1% でこの機能を一時的に無効にしました。GPT チームは、この 1% のトラフィック(テストグループ)の指標と、この機能が有効になっているトラフィックの 1% のサンプル(コントロール グループ)の指標を記録し、広告スクリプトにおける stale-while-revalidate の効果をテストしました。Google ディスプレイ広告のインプレッション 52 億回のサンプルから 2 週間の指標を収集し、コントロール グループのデータを測定したところ、次のことが確認されました。

  • 広告インプレッション数が 0.3% 増加。
  • 収益が 0.5% 増加。
  • 早期の広告スクリプトの読み込み(ページ読み込み開始から 500 ミリ秒以内)が 2% 増加。
  • 広告スクリプトの正常な読み込みが全体で 1.1% 増加しました。
広告スクリプトの読み込み回数の変化率(%)と、ページの読み込み開始から広告スクリプトの読み込みまでの時間(ミリ秒)
出典: Google 内部データ、2019 年 6 月~7 月

上のグラフに示すように、このテストの結果は、広告スクリプトの読み込みの成功率が高く、その大半がページの読み込みプロセスの早い段階で発生しています。

サイトに stale-while-revalidate を実装する

GPT チームは、stale-while-revalidate を使用して HTTP ヘッダーを比較的簡単に変更するだけで、速度が向上し、ビジネス指標が向上することが確認されています。ご自身のサイトで stale-while-revalidate を実装する方法については、Stale-while-revalidate で最新の状態を維持するをご覧ください。

写真提供: KahicaUnsplash