Google Cloud Storage(GCS)に格納しているオブジェクトのキャッシュ有効期間を変更する

この記事は約4分で読めます。

当ブログはGAEベースで構築しているので、サイトの画像ファイルは、Google Cloud Storage(以下GCS)に格納しています。

GCS格納オブジェクトのデフォルトキャッシュ有効期間が1時間(3600秒)について、以前から何とかしたいなーと思っていたので、今回対応する事にしました。

スポンサーリンク

GCSのキャッシュ保存先

GCSのキャッシュデータはエッジキャッシュに保存されます。

エッジキャッシュとは??

Google利用しているキャッシュサーバーをGCPユーザーも相乗りで利用する機能。Googleが管理しているリソースなので利用者側でキャッシュクリアが明示的に行えないなど、制約があります。

スポンサーリンク

GCSのキャッシュ有効期限を変更

長期間有効にすると何かと面倒だなと思い、キャッシュ有効期間を1ヶ月(2,592,000秒)にしようと思います。

設定する場所はGCSオブジェクトのメタデータになりますが、Cloud Consoleからでは1オブジェクトずつしか設定変更できません。

数が多いので、Cloud SDKでコマンドで一括設定することにしました。

※コマンドを実行するアカウントに、対象バケットのストレージ編集者またはストレージ管理者のIAMロールが付与されている必要があります。

gsutil setmeta -r -h 'Cache-Control:public, max-age=2592000' gs://【バゲット名】

変更結果の確認

任意のページを読み込ませたあと、curlコマンドでファイルにアクセスし、レスポンスヘッダを見てみます。

curlコマンド

curl -v https://storage.googleapis.com/【バゲット名】/【ファイル名】 | grep -i cache

返ってきたレスポンスヘッダの内容

* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 200
< x-guploader-uploadid: AAANsUkF-h51ZOcYM1-ltmehqCU75KQ-jXVWDBKhv2nWvNhFk7wjKGhhRoz8j2hac6wlQBrjSEJPWW_xreSpMrvH79jIhRNY0g
< date: Tue, 04 Aug 2020 04:41:48 GMT
< cache-control: public, max-age=2592000
< expires: Wed, 04 Aug 2021 04:41:48 GMT
< last-modified: Sat, 01 Aug 2020 09:29:36 GMT
< etag: "3e81bd47f5db179a95fbfeb924cd6db2"
< x-goog-generation: 1596274176083515
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 30946
< content-type: image/jpeg
< x-goog-hash: crc32c=YL6kvQ==
< x-goog-hash: md5=PoG9R/XbF5qV+/65JM1tsg==
< x-goog-storage-class: STANDARD
< accept-ranges: bytes
< content-length: 30946
< server: UploadServer
< alt-svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"

cache-control: public, max-age=2592000で返ってきました。

スポンサーリンク

まとめ

画像ファイル読込は多少改善されると思います。

が、Cloud CDNにキャッシュできたらより便利です。

何か方法は無いかな?とあれこれ調べています。

スポンサーリンク

参考情報

スポンサーリンク
GCP
ヤマログ
タイトルとURLをコピーしました