このページでは、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-age
と s-maxage
の値で指定します。このヘッダーは HTTP 仕様で定義されています。たとえば、次の Cache-Control
ヘッダーは、キャッシュの有効期限 72 時間(259,200 秒)を使用して、関連付けられたコンテンツを一般公開して閲覧可能およびキャッシュ可能にします。
Cache-Control: public, max-age=259200
キャッシングを最大にするには、キャッシングの概要のガイドラインに従います。Cache-Control
メタデータ フィールドの max-age
と s-maxage
の値は、次のように連携して動作することに注意してください。
max-age
とs-maxage
の値は秒単位です。s-maxage
の値は共有キャッシュにのみ適用され、ブラウザのキャッシュには適用されません。max-age
の値は、s-maxage
によってオーバーライドされない限り、すべてのキャッシュに適用されます。
変更頻度の低いコンテンツや関連コンテンツとともに変更される必要のあるコンテンツについては、多くの場合、長い有効期限を URL バージョン管理と組み合わせて使用するのが適切です。
キャッシュ TTL の最適化
TTL を設定またはオーバーライドすることで、Cloud CDN がレスポンスをキャッシュに保存する期間と、Cloud CDN がレスポンスを再検証するタイミングを微調整できます。
クライアント向け TTL を定義して、ブラウザ キャッシュを最大限に活用することもできます。
詳細については、TTL の設定とオーバーライドを使用するをご覧ください。
カスタム キャッシュキーを使用してキャッシュ ヒット率を向上させる
デフォルトの場合、Cloud CDN は完全な要求 URL を使用してキャッシュキーを構築します。パフォーマンスとスケーラビリティのためには、キャッシュヒット率を最適化することが重要です。キャッシュ ヒット率を最適化するためには、カスタム キャッシュキーを使用できます。
キャッシュキーをカスタマイズして、プロトコル、ホスト、クエリ文字列の任意の組み合わせの追加や省略を行うことができます。たとえば、異なるドメインで同じロゴを使用する 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 を使用している場合は、次の点にご注意ください。
公開コンテンツと非公開コンテンツは別々の Cloud Storage バケットに保存する。
サードパーティのパフォーマンス テストのレビュー
サードパーティ プロバイダからのレポートを確認します。たとえば、Citrix Radar では可用性、レイテンシ、スループットのレポートを提供しています。