CDNの基本を初心者向けに整理してみた

KK
2026-04-13
2026-04-13

年三日坊主のKKです。

Web関連技術は複雑化する傾向が強いので説明しようとすると意外と大変なものが多いです。
そんなもののひとつがWebサイトの高速化や負荷分散の文脈でよく出てくる「CDN(Content Delivery Network)」
かと思います。

最近では多くのCDNがWAFなどのセキュリティ機能を持つようになって来ており、更にサービス事業者によって実装も違うことが多いため、益々ややこしい存在になりつつあります。

そのため、仕組みをちゃんと説明しようとすると意外と難しいです。

この記事では、

  • CDNの基本的な仕組み
  • よくある誤解
  • 実際の構成イメージ
  • 導入パターン(プロキシ型 / オフロード型)

を、できるだけシンプルに整理してみようと思います。


CDNとは何か?

CDNとは一言でいうと:

👉 「ユーザの近くからコンテンツを配信する仕組み」

です。

通常のWebアクセスでは:

 ユーザ → 遠くのサーバ(「オリジン」と呼びます) 

となるため、オリジンとユーザの距離が遠いほど遅くなります。

CDNを使うと:

 ユーザ → 近くのCDN → オリジン 

となり、ユーザの近くのサーバから配信されるため高速化されます。


今回の前提(例)

以下のようなシンプルなWebサイトを例にします:

  • www.example.com/index.html (静的)

  • www.example.com/img/logo.png (静的)

  • www.example.com/cgi/counter.cgi(動的) 

  • オリジンサーバ:www.example.com
  • CDNエッジ:cdn000.example.com

CDNの基本機能①:キャッシュ

CDNの一番重要な機能はキャッシュです。

初回アクセス

ユーザ → CDN → オリジン
         ↓
      コンテンツ取得
         ↓
       CDNに保存 

2回目以降

 ユーザ → CDN(キャッシュあり)
     ↓
   即レスポンス 

👉 オリジンまでコンテンツを取りに行かないので速い


CDNの基本機能②:オンデマンドキャッシュ

ここは初心者がよく誤解するポイントです。

❌ よくある誤解
「CDNはオリジンのコンテンツ全部をキャッシュとして世界中にコピーする」

✔ 実際
👉 実際にアクセスされた要素だけがアクセスされた場所でキャッシュされる(オンデマンド)

東京ユーザ → 東京CDN → キャッシュ作成
NYユーザ → NY CDN → キャッシュ作成 
※ロンドンユーザがアクセスしなければロンドンCDNにキャッシュは作成されない。
  • 各エッジは独立
  • オリジンの全コンテンツを無条件にキャッシュするわけではない
  • 自動同期はしない

CDNの基本機能③:近くのサーバが応答

CDNはユーザに最も近いサーバに誘導します。

大阪ユーザ → 大阪CDN
NYユーザ → NY CDN 

👉 通信距離が短くなり高速化


静的コンテンツと動的コンテンツ

CDNはすべてのコンテンツをキャッシュできるわけではありません。
より正確には、キャッシュできないわけではないですが、コンテンツ制作者の意図と異なる表示なる恐れがあるため注意が必要です。

静的コンテンツ(CDN向き)

静的コンテンツ=基本的にアクセスするたびに内容が変わらない要素

index.html
logo.png 

👉 キャッシュ可能

※静的コンテンツを更新した場合のキャッシュ反映については別記事で解説する予定です。


動的コンテンツ(CDNに不向き)

動的コンテンツ=基本的にアクセスするたびに内容が変わる要素 

 counter.cgi 

👉 アクセスごとに変わるため

  • キャッシュしない
  • 毎回オリジンへ

※動的コンテンツでもアクセスごとに内容が変わらないならキャッシュしても大丈夫。


CDNの全体の流れ

  1.  ユーザアクセス

  2.  CDNへ誘導

  3.  キャッシュ確認

  4.  なければオリジンから取得

  5.  キャッシュして返す 

👉 シンプルだけど強力


CDNの導入パターン

既存サイトにCDNを導入する場合、大きく2つの方法があります。


パターン①:プロキシ型(リバースプロキシ)

概要

元のドメインのままCDNを挟む方式です。

 ユーザ
 ↓
www.example.com(実体はCDN)
 ↓
CDN
 ↓
オリジン 

DNSでCDNに向けるのがポイント。
※wwwの付かないドメインの場合、DNSとCDNの組み合わせに制約がある場合もあります。


動作

ユーザ →CDN
     ↓
  キャッシュあり → 即返答
  キャッシュなし → オリジン取得 

 


この例での挙動

コンテンツ 挙動
index.html CDNキャッシュ
logo.png CDNキャッシュ
counter.cgi オリジン

メリット

  • 導入が簡単(既存コンテンツの修正がほぼ不要)
  • サイト全体を高速化
  • HTTPSやDDoS対策、WAFもまとめて適用可能

注意点

  • 動的コンテンツの制御が必要
  • CDN障害の影響が大きい

パターン②:オフロード型(静的配信分離)

概要

静的コンテンツだけCDNに逃がす方式です。


構成

ユーザ→www.example.com(HTML)
         ↓
    HTML内でCDN参照
         ↓
    cdn.example.com 

 


URLの変化

変更前:www.example.com/img/logo.png 

変更後:cdn.example.com/img/logo.png 


動作

① HTML → オリジン
② 画像 → CDN 

 


この例での挙動

コンテンツ 配信元
index.html オリジン
logo.png CDN
counter.cgi オリジン

メリット

  • 影響範囲が限定される
  • 段階導入が可能
  • トラブル時も安全

注意点

  • HTMLの修正が必要
  • ドメイン分離による制約(Cookie / CORS)

プロキシ型 vs オフロード型

項目 プロキシ型 オフロード型
導入の簡単さ
柔軟性
影響範囲
初心者向け

どちらを選ぶべきか?

ざっくり:

  • まずは簡単に導入したい → プロキシ型
  • 安全に試したい → オフロード型

まとめ

CDNはシンプルに言うと:

👉 「ユーザの近くにコピーを置いて速くする仕組み」

重要ポイントはこの3つ:

  • キャッシュで高速化
  • 必要な要素だけキャッシュ
  • ユーザに近いサーバが応答

まずはここまで理解して頂ければ具体的な運用や実装の話に進めるのではないかと思います。