🪠
公開したCloud Storageでキャッシュしない方法(組み込みキャッシュの無効化)
TL;DR
- Cloud Storage自体がキャッシュ機能を持っており、Storageが公開状態だとキャッシュが有効になる
- キャッシュをコントロールしたい場合は、CDNを設置して制御する or ファイルにタグを設定して制御する
- Cloud Storageのキャッシュパージはできない。CDNを設置するのが無難
状況
構成は以下の通りです。
Cloud StorageにWebファイルを配置し、Cloud Load Balancing経由で配信しています。

Cloud Storageのファイルを更新しても、なかなか反映されない問題が発生する。
CDNを使っていないのに、キャッシュされている動作をする。
原因はCloud Storageの組み込みキャッシュ
ドキュメント
ドキュメントにあるように、Cloud Storageを一般公開しているときキャッシュを行います。
Cloud Storageのファイル更新をすぐに反映したい場合は、3つの方法があります
- Cloud Storageでキャッシュしないように、Cache-Controlタグを設定する
- CDNを設置して、ファイル更新時にCDNのキャッシュをパージする (一般的な公開方法)
- CDNを設置するが、CDNでキャッシュを行わないように設定する (今回やる設定)
キャッシュしない構成を作る
開発中などキャッシュを行う必要がない場合、キャッシュを無効にしましょう。
CDNを構成するとCloud Storageのキャッシュも含めて設定を行えます。
そして、CDNで「キャッシュ無効」の設定をすることですべてのキャッシュが無効な状態になります。
(ドキュメントでは微妙な表現なのですが、自分で試した感じではうまくいっています。)
ドキュメント↓

CDNをキャッシュ無効化設定
キャッシュ無効な設定で、CDNを有効にしましょう。
Load Balancingの「バックエンドバケット」設定で以下の設定を行います。
- CDNを有効化
- キャッシュ時間を「常に再検証します」

本番運用が始まったら、CDNのキャッシュ時間を設定することでそのまま運用に移行できます。
以上です。
Discussion