コンテンツ配信のベスト プラクティス

このページでは、Cloud CDN でコンテンツ配信を最適化して時間短縮するためのベスト プラクティスについて説明します。

Cloud CDN では、キャッシュ可能なコンテンツの送信元として HTTP(S) 負荷分散を使用します。HTTP(S) ロードバランサは、Compute Engine 仮想マシン(VM)インスタンス グループCloud Storage バケット、またはその両方から、1 つのグローバル IP アドレスを使用して、静的コンテンツと動的コンテンツの組み合わせをユーザーに配信できます。

Google Cloud とシームレスに統合されているので、Cloud CDN をデプロイしてコンテンツを管理する際にはいくつかの選択肢があります。デプロイを計画、調整する際には、ここに記載されているベスト プラクティスに従ってください。詳細については、Cloud CDN の使用をご覧ください。

静的コンテンツの自動キャッシュ

パフォーマンスを改善するために、Cloud CDN を有効にする際、Cloud CDN に静的コンテンツを自動的にキャッシュさせるようにすることをおすすめします。

送信元からの静的レスポンスを自動的にキャッシュに保存するには、--cache-mode=CACHE_ALL_STATIC 設定を使用します(デフォルト)。この設定では、Cloud CDN は一般的な静的コンテンツ タイプをキャッシュに保存します。

時間的制約のあるコンテンツの有効期限の設定

Cloud CDN キャッシュのコンテンツの各部分には有効期限が関連付けられており、実際の使用法に適した有効期限を設定することが重要です。配信元サーバーはキャッシュ サーバーで期限切れになったコンテンツを再送する必要があるため、期限を慎重に選択する必要があります。

有効期限を選択する方法の 1 つは、コンテンツを更新する頻度に基づいてコンテンツを分類することです。たとえば、

  • スポーツイベントや交通情報のライブ配信など、ほぼリアルタイムの更新
  • 毎週、毎日、または毎時の気象情報やトップニュースの画像など、頻度の高い更新
  • ウェブサイトのロゴ、CSS、JavaScript のファイルなど、頻度の低い更新

次に、コンテンツ カテゴリ別の有効期限を選択します。たとえば、ほぼリアルタイムのスポーツの得点情報の場合、5 秒の有効期限が適切でしょう。また、最新の天気予報に関する情報の場合、1 時間の有効期限が適切でしょう。Cloud Storage に保存されているコンテンツについては、Cache-Control メタデータを使用して有効期限を設定します。コンテンツが Compute Engine によって提供される場合、ウェブ サーバー ソフトウェアを設定することによって有効期限を制御します。

有効期限は、Cache-Control ヘッダーの max-ages-maxage の値で指定します。このヘッダーは HTTP 仕様で定義されています。たとえば、次の Cache-Control ヘッダーは、キャッシュの有効期限 72 時間(259200 秒)を使用して、関連付けられたコンテンツを一般公開して閲覧可能およびキャッシュ可能にします。

  Cache-Control: public, max-age=259200

キャッシングを最大にするには、キャッシングの概要のガイドラインに従います。Cache-Control メタデータ フィールドの max-ages-maxage の値は、次のように連携して動作することに注意してください。

  • max-ages-maxage の値は秒単位です。
  • s-maxage の値は共有キャッシュにのみ適用され、ブラウザのキャッシュには適用されません。
  • max-age の値は、s-maxage によってオーバーライドされない限り、すべてのキャッシュに適用されます。

変更頻度の低いコンテンツや関連コンテンツとともに変更される必要のあるコンテンツについては、多くの場合、長い有効期限を URL バージョン管理と組み合わせて使用するのが適切です。

キャッシュ TTL の最適化

TTL を設定またはオーバーライドすることで、Cloud CDN がレスポンスをキャッシュに保存する期間と、Cloud CDN がレスポンスを再検証するタイミングを微調整できます。

クライアント向け TTL を定義して、ブラウザ キャッシュを最大限に活用することもできます。

詳しくは、TTL の設定とオーバーライドを使用するをご覧ください。

カスタム キャッシュキーを使用してキャッシュ ヒット率を向上させる

デフォルトの場合、Cloud CDN は完全なリクエスト URL を使用してキャッシュキーを作成します。パフォーマンスとスケーラビリティのためには、キャッシュヒット率を最適化することが重要です。キャッシュ ヒット率を最適化するには、カスタム キャッシュキーを使用できます。

Cloud CDN Key-Value ストア
Cloud CDN Key-Value ストア

キャッシュキーをカスタマイズして、プロトコル、ホスト、およびクエリ文字列の任意の組み合わせを含めたり省略したりすることができます。たとえば、異なるドメインで同じロゴを使用する 2 つのウェブサイトがあるとします。ロゴを表示するには、次のようにカスタム キャッシュキーを使用します。

  • ウェブサイトのコンテンツは異なりますが、どちらのドメインでも会社の同じロゴを使用します。ロゴを保持するバックエンドサービスのCloud CDN を有効化してキャッシュキーをカスタマイズするとき、[ホスト] チェックボックスをオフにすると、キャッシュでドメインが無視されるようになりますが、ロゴはキャッシュに保存されます。

  • HTTP と HTTPS のどちらで表示されるかにかかわらず、ロゴはキャッシュに保存される必要があります。ロゴを保存するバックエンド サービスのキャッシュキーをカスタマイズするときに、[プロトコル] チェックボックスをオフにすると、HTTP と HTTPS によるリクエストがロゴのキャッシュ エントリの一致としてカウントされるようになります。

キャッシュキーをカスタマイズする方法については、キャッシュキーの使用をご覧ください。

URL バージョン管理を使用したコンテンツの更新

コンテンツをバージョン管理すると、同じコンテンツの異なるバージョンが提供されます。つまり、キャッシュ エントリが期限切れになる前にユーザーに新しいコンテンツを表示して、実質的に古いコンテンツを削除します。バージョン管理機能は無料で使いやすいので、キャッシュ可能なコンテンツを更新するためのデフォルトの方法として使用することをおすすめします。

コンテンツをバージョン管理するには、バージョン番号などのパラメータを URL に追加します。URL にパラメータを含めるには、次のようなさまざまな方法があります。

  • クエリ文字列の追加: file.ext?v=100
  • ファイル名の変更: file.1.0.0.ext または file_v100.ext
  • ファイルパスの変更: /v100/file.ext

パラメータを追加すると、ファイル名と URL が変更されます。この変更により、キャッシュでは既存のキャッシュ エントリが無視されるようになります。

無効化を控えめに使用したコンテンツの削除

無効化すると、キャッシュ エントリが期限切れになる前に、Cloud CDN 分散キャッシュ サーバーからコンテンツが削除されます。無効化には結果整合性があります。

無効化は控えめに、最後の手段としてのみ使用することをおすすめします。たとえば、法律上の理由や意図しないアップロードのためにコンテンツを削除する必要が生じた場合は、無効化が役立ちます。それ以外の場合は、可能な限りバージョン管理機能を使用するか、コンテンツが正常に期限切れになるまで待つことをおすすめします。Cloud CDN キャッシュ サーバーは、アクセス頻度の低いコンテンツを定期的に削除して、新しいコンテンツのスペースを確保します。30 日間アクセスされなかったコンテンツは無条件で削除されます。

有効期限の設定URL バージョン管理の使用とは対照的に、キャッシュの無効化は開始するたびに課金され、回数制限があります。

無効化の詳細については、キャッシュ無効化の概要をご覧ください。

署名付き URL の使用

署名付き URL を使用している場合は、次の点にご注意ください。

サードパーティのパフォーマンス テストのレビュー

サードパーティ プロバイダからのレポートを確認します。たとえば、Citrix Radar では可用性、レイテンシ、スループットのレポートを提供しています。