同じ画像を、東京の人にもロンドンの人にも速く届けたい。そのために、世界中に「近くの倉庫」を置いておくのがCDNです。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
CDNは、世界中に分散した“利用者の近くの倉庫”(※1 エッジ)の集まり。画像・CSS・JSなど変わらないもののコピーを各地に置き、利用者に一番近い倉庫から配ります。

大事なのは「1台の独立したサーバ」ではなく、たくさんの拠点に同じものが並んでいる層だということ。
登場人物メモ:
- ※1 エッジ — 利用者の近くにある配信拠点。世界中にたくさんある
- ※2 オリジン — 大元のサーバ(あなたのサービス本体)。エッジに無いときの取り寄せ先
この部分をもっと深く(中級)
CDNは、地理的に分散したエッジ拠点(PoP) のキャッシュ網です。要点は「何をキーに、いつまで、どう更新するか」。
- キャッシュキー — URLなどを鍵に、コピーを出し入れする
- TTL(有効期限) — その期間はエッジのコピーを新鮮とみなす
- オリジン — 大元。miss時やTTL切れ時に取りに行く先
アニメーション『CDNのエッジ配信』を開く
登場人物メモ:
- ※1 cache hit/miss — エッジにある(hit)/無くてオリジンへ(miss)
- ※2 パージ — エッジのコピーを強制的に無効化する操作
仕事の流れ
- ブラウザが画像などをお願いする
- 一番近いエッジに、そのコピーがあるか見る
- あれば即返す(cache hit・速い)
- 無ければオリジンから取り寄せて配り、ついでにエッジに保存する(cache miss)
- 次からは、その地域の人にはエッジから即返せる
この部分をもっと深く(中級)
- リクエストのキャッシュキーで、エッジにコピーがあるか確認
- hit かつ TTL 内 ならそのまま返す
- miss/TTL切れ ならオリジンへ。条件付きリクエストで「変わってなければそのまま」を確認することも
- 取得したものをTTL付きでエッジに保存し、次に備える
アニメーション『エッジ配信の地理(近い=速い)』を開く
なぜ速く・強くなる?
- 速い — 物理的に近い=往復が短い
- 軽い — 静的なものをエッジが肩代わりし、オリジンの負荷が下がる
- 強い — アクセスが世界中の拠点に分散するので、一点に集中しない
だから「変わらないもの」はCDN、「その人だけ・刻々と変わるもの」はオリジン、と役割を分けます。
この部分をもっと深く(中級)
- Cache-Control ヘッダ — キャッシュ可否や期間をオリジンが指示する(max-age など)。private は共有キャッシュ禁止(個人向け応答に付ける)、public は共有可、s-maxage は共有キャッシュ用のTTLを別に指定する
- ETag/If-None-Match — TTL切れ時、内容の識別子(ETag)を If-None-Match で送って問い合わせ、変わっていなければ 304(Not Modified)で本体を取り直さず、エッジのコピーを使い続ける
- バージョニング — 内容が変わったらファイル名(URL)を変える。古い版と衝突しない定石
- パージ/即時無効化 — 緊急時にエッジのコピーを消す
- 静的と動的 — 変わらないものは長めのTTL、動的なものは短いか非キャッシュ。近年はエッジで軽い処理をする方式もある
⚠️ うまくいかないとき
- 更新が反映されない — 古いコピーがエッジに残っている(期限切れ or 手動でパージが必要)
- キャッシュされない — 個人向け・動的なものは基本キャッシュできず、速さの恩恵が薄い
この部分をもっと深く(中級)
- stale(古いまま) — TTLが長すぎ/パージ漏れで、更新が届かない
- hit率が低い — キャッシュキーが細かすぎる(クエリ違いで別扱い)などで、ほとんどmiss
- 個人情報の誤キャッシュ — 個人向けの応答を誤って共有キャッシュに載せてしまう(他人に見える事故。攻撃の「キャッシュ汚染/ポイズニング」とは別物)。防ぐ鍵は Cache-Control: private を付け、共有キャッシュに載せないこと
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. CDNが配るのに向いているのはどれ?
問2. CDNが速い一番の理由に近いのは?
問3. エッジに残った古いコピーを、強制的に消す操作を何という(カタカナまたは英語)?
問4. CDNの「オリジン」とは何?
問5. 近くのエッジに欲しいコピーが無い(cache miss)とき、どうなる?
問6. CDNが「強い(一点に集中しにくい)」といえる理由は?
問7. CDNで「更新したのに古いままが表示される」原因に近いのは?
問8. 利用者の近くにあって、コピーを配る配信拠点を、CDNでは何と呼ぶ(カタカナまたは英語)?