このページでは、Cloud Storage オブジェクトのキャッシュ保存の方法をコントロールする複数の手法について説明します。このページでは、Cloud Storage の組み込みキャッシュと Cloud CDN を中心に説明しますが、Cloud Storage はサードパーティの CDN との互換性も備えています。
概要
Cloud Storage オブジェクトがキャッシュに保存されると、オブジェクト データのコピーは Google またはインターネット キャッシュに保存されるため、将来のリクエストではオブジェクトが迅速に処理されます。キャッシュに保存するとパフォーマンスが向上する可能性がありますが、オブジェクトを更新しても、キャッシュに保存されている失効済みコンテンツが引き続き配信されるリスクもあります。
Cloud Storage の組み込みキャッシュ
オブジェクトの Cache-Control
メタデータがキャッシュ保存を許可するように設定され、次の条件が満たされている場合は、オブジェクトのデータが Cloud Storage ネットワークのキャッシュに保存されるため、何も行わなくても、Cloud Storage はコンテンツ配信ネットワーク(CDN)のように動作します。
- オブジェクトが一般公開されている。
- オブジェクトが、リクエスト元による支払いが有効になっているバケットに保存されておらず、Virtual Private Cloud サービス境界内に存在しない。
- オブジェクトが顧客管理の暗号鍵や顧客指定の暗号鍵で暗号化されていない。
Cloud Storage は、次のような Cache-Control
の標準値を遵守します。
public
: オブジェクトはキャッシュに保存できます。private
: オブジェクトは、Cloud Storage によってキャッシュ保存されることはありませんが、リクエスト元のローカル キャッシュに保存されます。no-cache
: オブジェクトは、キャッシュに保存されますが、Cloud Storage によって最初に検証されない限り、将来のリクエストには使用されません。no-store
: オブジェクトはキャッシュに保存されません。max-age=TIME_IN_SECONDS
: キャッシュに保存されたオブジェクトが古くなったとみなされるまでの時間。max-age
には任意の長さの時間を設定できます。特別な状況を除いて、古くなったオブジェクトは、キャッシュから提供されません。
オブジェクトの Cache-Control
メタデータを設定するには、オブジェクトのメタデータの編集をご覧ください。
IAM 拒否ポリシーを使用した組み込みキャッシュの動作
プリンシパル ID allUsers
からオブジェクトへの読み取りアクセスを制限する組織レベルの IAM 拒否ポリシーがある場合、allUsers
にオブジェクトの読み取りアクセス権を付与するバケットレベルの IAM ポリシーがあったとしても、そのオブジェクトの組み込みキャッシュは無効になります。ただし、IAM 拒否ポリシーが個々のユーザーのみを制限する場合、オブジェクトに対する組み込みキャッシュは有効なままになります。
パフォーマンスに関する注意事項
公開キャッシュ可能なオブジェクトに対しては、パフォーマンスがかなり向上することがあります。多数のクライアントを制御するオブジェクトを使用している場合、キャッシュを無効にして最新のデータを提供するには、次のようにします。
オブジェクトの
Cache-Control
メタデータをpublic
に設定し、max-age
を 15~60 秒に設定することを検討してください。ほとんどのアプリケーションでは、パフォーマンスの向上と引き換えに、オブジェクトが数秒間古い状態になることは許容できます。オブジェクトの
Cache-Control: no-store
を使用して、後続のリクエストでオブジェクトがキャッシュに保存されないようにします。
Cloud CDN を使用する Cloud Storage
ユーザーにコンテンツを配信する際に最高のパフォーマンスを得るには、Cloud CDN で Cloud Storage を使用することをおすすめします。
Cloud CDN を使用するには、バックエンドの Cloud Storage バケットで外部アプリケーション ロードバランサを使用する必要があります。Cloud Storage バケットに対する HTTP(S) ロードバランサの設定に関するチュートリアルは、静的ウェブサイトのホスティングをご覧ください。
Cloud CDN キャッシュ モードを使用すると、統合されたキャッシュ構成をすべてのオブジェクトに適用できます。キャッシュ モードまたは TTL の上限を使用して Cache-Control
メタデータをオーバーライドしていない限り、Cloud CDN はオブジェクトに設定された Cache-Control
メタデータを使用して、キャッシュへの保存方法を判断します。
Cloud Storage の組み込みキャッシュと Cloud CDN のどちらにするかを選択する場合は、次の点を検討してください。
機能 | Cloud Storage | Cloud CDN |
---|---|---|
キャッシュ可能な最大ファイルサイズ | 10 MiB | 100 GiB 1 |
デフォルトのキャッシュの有効期限 | 1 時間 | 1 時間(構成可能) |
HTTPS を介したカスタム ドメインのサポート | × | ○ |
キャッシュの無効化 | × | ○ |
1 配信元サーバーがバイト範囲リクエストをサポートしている場合、Cloud CDN でキャッシュに保存できるファイルの最大サイズは 100 GiB です。配信元サーバーがバイト範囲リクエストをサポートしていない場合、Cloud CDN でキャッシュに保存できるファイルの最大サイズは 10 MiB です。
料金に関する考慮事項
料金に関して、Cloud Storage の組み込みキャッシュと Cloud CDN のどちらを選択するかは毎月処理するデータ量が目安になります。このデータ量によりネットワークの費用が決まります。
1 か月間に処理するキャッシュ可能なデータ量が数 GiB 未満の場合は、Cloud Storage の組み込みキャッシュを使用するほうが、全体的な費用が抑えられると考えられます。Cloud Storage のキャッシュ保存では、キャッシュに保存されたオブジェクトとキャッシュに保存されていないオブジェクトに同じ送信データ転送費用が発生するため、Cloud CDN よりもネットワーク費用が高くなる可能性があります。ただし、課金されるのは、Cloud Storage、Cloud CDN、Cloud Load Balancing を合算した費用ではなく、Cloud Storage に関連するデータ ストレージとオペレーションの費用のみです。
1 か月あたり 100 GiB 以上のキャッシュ可能なデータを常時配信している場合、またはリクエストごとにロギングとカスタム ヘッダーを使用する必要がある場合は、Cloud CDN を使用するほうが料金を抑えられると考えられます。キャッシュ フィルが行われる際には、Cloud Storage の送信データ転送と Cloud CDN のキャッシュ フィルで料金が発生します。キャッシュが完全に満たされると Cloud CDN のネットワーク料金が適用されます。Cloud Storage とともに外部アプリケーション ロードバランサと Cloud CDN を維持するために運用費用が高くなっても、Cloud CDN の使用によるネットワーク費用の削減によって元が取れる可能性があります。
次のステップ
Cache-Control
メタデータについて詳細を確認する。- RFC の
Cache-Control
ディレクティブについて詳細を確認する。 - Cloud CDN のキャッシュの概要を確認する。
- Cloud Storage バケットからのリクエストを処理する外部 HTTP(S) ロードバランサを作成する方法を確認する。
- 外部アプリケーション ロードバランサと Cloud CDN の料金の詳細を確認する。