このページでは、Cloud Storage オブジェクトのキャッシュ保存の方法をコントロールする複数の手法について説明します。このページでは、Cloud Storage の組み込みキャッシュと Cloud CDN を中心に説明しますが、Cloud Storage はサードパーティの CDN との互換性も備えています。
概要
Cloud Storage オブジェクトがキャッシュに保存されると、オブジェクトのコピーは Google またはインターネット キャッシュに保存されるため、将来のリクエストではオブジェクトが迅速に処理されます。キャッシュに保存するとパフォーマンスが向上する可能性がありますが、オブジェクトを更新しても、キャッシュに保存されている以前のバージョンが引き続き配信されるリスクもあります。
Cloud Storage の組み込みキャッシュ
通常、一般公開オブジェクトはデフォルトで Cloud Storage ネットワークのキャッシュに保存されるため、特に設定をしなくても、Cloud Storage はコンテンツ配信ネットワーク(CDN)のように動作します。
オブジェクトの Cache-Control
メタデータにより、オブジェクトがブラウザのキャッシュとインターネット キャッシュに保存される期間が決まります。Cloud Storage のネットワークでは、一般公開されているオブジェクトだけがキャッシュに保存されます。ただし、プロキシまたはブラウザは、一般公開でないオブジェクトでも、Cache-Control
メタデータに基づいてオブジェクトをキャッシュに保存する可能性があります。また、オブジェクトに対する公開アクセスを無効にしても、最後にアクセスされた日時とその Cache-Control
設定によっては、オブジェクトがキャッシュから提供される可能性があります。たとえば、Cache-Control
を public, max-age=3600
に設定した場合、オブジェクトはキャッシュに 1 時間残ります。
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 | 5 TiB |
デフォルトのキャッシュの有効期限 | 1 時間 | 1 時間(構成可能) |
HTTPS を介したカスタム ドメインのサポート | × | ○ |
キャッシュの無効化 | × | ○ |
料金に関する考慮事項
料金に関して、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 の料金の詳細を確認する。