🪠

公開したCloud Storageでキャッシュしない方法(組み込みキャッシュの無効化)

に公開

TL;DR

  • Cloud Storage自体がキャッシュ機能を持っており、Storageが公開状態だとキャッシュが有効になる
  • キャッシュをコントロールしたい場合は、CDNを設置して制御する or ファイルにタグを設定して制御する
  • Cloud Storageのキャッシュパージはできない。CDNを設置するのが無難

状況

構成は以下の通りです。
Cloud StorageにWebファイルを配置し、Cloud Load Balancing経由で配信しています。

Cloud Storageのファイルを更新しても、なかなか反映されない問題が発生する。
CDNを使っていないのに、キャッシュされている動作をする。

原因はCloud Storageの組み込みキャッシュ

ドキュメント
https://cloud.google.com/storage/docs/caching?hl=ja

ドキュメントにあるように、Cloud Storageを一般公開しているときキャッシュを行います。

Cloud Storageのファイル更新をすぐに反映したい場合は、3つの方法があります

  • Cloud Storageでキャッシュしないように、Cache-Controlタグを設定する
  • CDNを設置して、ファイル更新時にCDNのキャッシュをパージする (一般的な公開方法)
  • CDNを設置するが、CDNでキャッシュを行わないように設定する (今回やる設定)

キャッシュしない構成を作る

開発中などキャッシュを行う必要がない場合、キャッシュを無効にしましょう。

CDNを構成するとCloud Storageのキャッシュも含めて設定を行えます。
そして、CDNで「キャッシュ無効」の設定をすることですべてのキャッシュが無効な状態になります。

(ドキュメントでは微妙な表現なのですが、自分で試した感じではうまくいっています。)


ドキュメント↓

https://cloud.google.com/cdn/docs/setting-up-cdn-with-bucket?hl=ja

CDNをキャッシュ無効化設定

キャッシュ無効な設定で、CDNを有効にしましょう。

Load Balancingの「バックエンドバケット」設定で以下の設定を行います。

  • CDNを有効化
  • キャッシュ時間を「常に再検証します」

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

以上です。

Discussion