【入門編】 Cloud CDNのキャッシュ無効化(Cache Invalidation)の仕様 – クラウドインフラと仮想化ネットワーク実践ガイド

「古い情報が表示される!」を即解決。Google Cloud CDNの「キャッシュ無効化」を郵便配達で理解する

こんにちは!SREの現場では、日々「更新したはずの画像が、いつまで経っても古いまま表示される」という悲鳴(?)をよく耳にします。

Webサイトの表示を爆速にするために欠かせない「Cloud CDN」。世界中に設置された拠点(エッジ)にコンテンツを先回りさせておくことで、ユーザーの近くから素早くデータを届ける仕組みですが、この「先回り」が仇となり、更新作業をした直後には「あれ?反映されない!」というトラブルが起きがちです。

今日は、そんな悩みを解決する「キャッシュ無効化(Cache Invalidation)」の仕組みを、身近な例えを交えて紐解いていきましょう。

—

そもそも、なぜ「キャッシュ」は消えてくれないの?

Cloud CDNの役割は、例えるなら「街のいたるところにある小さな郵便局(エッジ)」です。

本来、あなたのWebサイトのデータは「本局(オリジンサーバー)」にしかありません。でも、ユーザーが来るたびに本局まで取りに行くと時間がかかりますよね。そこで、街中の郵便局にあらかじめ荷物をコピーして置いておき、近くのユーザーに渡しているんです。

ところが、本局で荷物(コンテンツ)を新しいものに入れ替えたとしても、街中の郵便局にある「古い荷物」は、「新しいものが届いたよ!」と言われない限り、そのまま棚に置きっぱなしになってしまいます。これが、キャッシュが古いまま残る正体です。

—

「キャッシュ無効化」とは、郵便局への「回収命令」

Cloud CDNにおける「キャッシュ無効化」とは、この街中の郵便局に対して「その荷物はもう古いから、今すぐ棚から捨てて、本局から新しいものを取り直して!」と一斉に指示を出す命令のことです。

この命令を出すとき、私たちは「どの荷物を捨ててほしいか」をパス(アドレス)で指定します。

1. 特定のファイルだけを消す(パス指定)

「画像1枚だけ更新したんだ」という時は、そのファイルのパスをピンポイントで指定します。

  • 指定例: /images/logo.png
  • 良いところ: 他のデータには影響がないので、とても安全です。

2. まとめて消す(ワイルドカード指定)

「キャンペーン期間が終わったから、画像フォルダの中身を全部入れ替えたい!」という時は、ワイルドカード(*)を使います。

  • 指定例: /images/*
  • 注意点: 一気に全部消してしまうため、アクセスが集中した直後に全ユーザーが本局へデータを請求することになり、オリジンサーバーに大きな負荷がかかります。計画的に使いましょう。

—

実際にコマンドで「無効化」してみよう

Google Cloudの管理コンソールからポチポチ操作することもできますが、自動化されたパイプラインに組み込むなら gcloud コマンドが一番です。

以下のコマンドは、特定のパスのキャッシュを無効化する例です。

# ロードバランサのキャッシュ無効化を実行するコマンド
# [LOAD_BALANCER_NAME]: 対象のロードバランサ名
# [PATH]: 無効化したいパス(例: /images/banner.jpg)

gcloud compute url-maps invalidate-cdn-cache [LOAD_BALANCER_NAME] \
    --path "[PATH]" \
    --global # グローバルで展開している場合は必ず指定しましょう

もし、フォルダごと一括で消したいなら、パスを工夫します。

# /static/ 配下の全ファイルを一括無効化する場合
gcloud compute url-maps invalidate-cdn-cache [LOAD_BALANCER_NAME] \
    --path "/static/*" \
    --global

—

現場で役立つ「失敗しないためのヒント」

最後に、ベテランエンジニアが現場で気をつけているポイントを3つだけ共有しますね。

1. 「即時」といっても数秒〜数分かかる
「実行したのにまだ変わらない!」と焦る必要はありません。世界中のエッジサーバーに命令が伝わるまで、少しだけタイムラグがあります。深呼吸して待ちましょう。
2. ブラウザのキャッシュも忘れない
サーバー上のキャッシュを消しても、あなた自身のブラウザが「前見た時のデータがあるからこれでいいや」と表示していることがあります。シークレットモードで確認するか、ブラウザのキャッシュをクリアするのを忘れずに!
3. 無効化は「最終手段」にする
頻繁に無効化リクエストを投げると、オリジンサーバーがパンクしてしまいます。可能な限り、HTTPヘッダーの Cache-Control を使って「このデータは1時間で古くなるよ」と適切に設定しておくのが、最も賢い運用です。

—

まとめ:ネットワークは「流れ」で理解する

Cloud CDNのキャッシュ無効化は、単なるコマンド操作ではなく「世界中のエッジへ一斉に届ける回収命令」です。

最初は難しく感じるかもしれませんが、「郵便局に古い荷物を捨てさせる」というイメージを持てば、パケットの流れが頭の中で見えてくるはずです。

インフラは泥臭いトラブルと向き合うことも多いですが、一つひとつの挙動を紐解いていけば、必ず味方になってくれます。ぜひ、ご自身の環境でも試してみてくださいね!

それでは、また次回の記事でお会いしましょう。ハッピー・クラウド・コンピューティング!

コメント

タイトルとURLをコピーしました