CDNとは?キャッシュ配信の仕組み

《 Cloudflare完全ガイド 目次へ 》

ここまでのページで、ドメインを取得し、DNSで名前解決するところまでを学びました。訪問者のブラウザは、DNSで調べたIPアドレスのサーバーに接続して、ページのデータを受け取ります。ではこのとき、そのサーバーが地球の裏側にあったらどうなるでしょうか。あるいは、テレビで紹介された直後のように、アクセスが一度に殺到したら何が起きるでしょうか。

この2つの問題に対する答えが、CDN(Content Delivery Network:コンテンツ配信ネットワーク)です。CDNはCloudflareの出発点となったサービスであり、いまも中核であり続けています。このページでは、CDNが解決する問題と、その心臓部であるキャッシュの仕組みを学びます。

このページで分かること

  • Webサイトの表示が遅くなる2大要因(距離とサーバー負荷)
  • CDNの基本構造(オリジンサーバーとエッジサーバー)
  • キャッシュの仕組み(キャッシュヒット・キャッシュミス・TTL)
  • 何がキャッシュされて、何がキャッシュされないのか
  • CloudflareのCDNの特徴と、初心者がつまずきやすいポイント

CDNがない世界の問題

問題1:距離は速度に直結する

インターネットの通信も物理法則には逆らえません。データは光ファイバーの中を光の速さで進みますが、それでも東京とニューヨーク(約1万km)を往復すれば、どうしても0.1秒以上かかります。しかも1ページの表示では、画像・CSS・JavaScriptなど数十個のファイルをやり取りするため、この往復が何度も発生します。サーバーが遠いというだけで、ページの表示は目に見えて遅くなるのです。

問題2:1台のサーバーには限界がある

Webサイトの本体を置いているサーバーを、オリジンサーバー(origin:源流)と呼びます。レンタルサーバーでも、自宅のNASでも、クラウド上の仮想マシンでも、役割としてはすべてオリジンサーバーです。

オリジンサーバーが1台で処理できるアクセス数には限界があります。普段は1日1,000アクセスのブログでも、SNSで話題になれば1時間に10万アクセスが来ることもあります。全訪問者が直接オリジンサーバーに接続する構造では、こうしたアクセス集中でサーバーが応答できなくなり、せっかくの注目の機会にサイトが落ちてしまいます。

CDNとは

世界中の「配布拠点」が肩代わりする

CDNは、世界中に配置した多数のサーバーにコンテンツの複製を置き、訪問者にいちばん近いサーバーから配信する仕組みです。この配布拠点にあたるサーバーを、ネットワークの端(edge)に置かれることからエッジサーバーと呼びます。

CDNなしとCDNありの違い
図1:CDNなしとCDNありの違い

宅配に例えると、オリジンサーバーは工場、エッジサーバーは各地の配送センターです。全国からの注文にすべて工場から直送するのではなく、よく出る商品は各地の配送センターに在庫しておき、そこから届ける。距離が縮むので速く届き、工場の負担も減ります。

CDNを導入すると、先ほどの2つの問題が同時に解決します。

  • 距離の問題:東京の訪問者には東京近郊のエッジサーバーが、ロンドンの訪問者にはロンドンのエッジサーバーが応答するため、物理的な距離が大幅に縮まります
  • 負荷の問題:アクセスの大部分をエッジサーバーが肩代わりするため、オリジンサーバーへの接続は大きく減ります。アクセスが殺到しても、世界中のエッジサーバーに分散して受け止められます

キャッシュ:エッジサーバーの在庫

エッジサーバーが持つコンテンツの複製をキャッシュ(cache)と呼び、複製を保存しておくことを「キャッシュする」と言います。キャッシュはCDNの心臓部なので、動きを順に追ってみましょう。

キャッシュヒットとキャッシュミスの流れ
図2:キャッシュヒットとキャッシュミスの流れ
  1. 訪問者がエッジサーバーにファイル(たとえばブログの画像)をリクエストします
  2. エッジサーバーは自分のキャッシュを確認します。複製がまだ無ければ(これをキャッシュミスと呼びます)、オリジンサーバーから取り寄せ、複製を保存したうえで訪問者に応答します
  3. 以降の訪問者には、保存済みの複製をそのまま返します(これがキャッシュヒットです)。オリジンサーバーには問い合わせません

つまり最初の1人目だけはオリジンサーバーまで取りに行きますが、2人目からはエッジサーバーだけで完結します。アクセスが多いサイトほど、キャッシュヒットの割合(キャッシュヒット率)が上がり、CDNの効果が大きくなります。

TTL:キャッシュの賞味期限

複製をいつまでも配り続けると、オリジンサーバーで画像を差し替えても古いものが表示され続けてしまいます。そこでキャッシュには有効期限が設定されます。これをDNSのページでも登場したTTL(Time To Live)と呼びます。期限が切れたキャッシュは破棄され、次のリクエストのときにオリジンサーバーから新しい複製を取り直します。

TTLは、オリジンサーバーが応答時に付けるCache-Controlという指示(HTTPヘッダー)で制御するのが基本です。「これは1年間キャッシュしてよい」「これはキャッシュ禁止」といった指示をファイルごとに出せます。CDN側の設定で上書きすることもできます。

何がキャッシュされるのか

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

キャッシュは「誰に配っても同じもの」にしか使えません。この観点でコンテンツは2種類に分かれます。

  • 静的コンテンツ:画像・CSS・JavaScript・フォント・動画・PDFなど、誰がいつ見ても同じファイル。キャッシュに向いています
  • 動的コンテンツ:ログイン後のマイページ、カートの中身、検索結果など、人や状況によって内容が変わるもの。そのままキャッシュしてはいけません。もし他人のマイページのキャッシュが配られたら、重大な情報漏えいになります

Cloudflareの既定では「HTMLはキャッシュしない」

Cloudflareは既定で、拡張子に基づいて静的ファイル(画像・CSS・JavaScriptなど約70種類)をキャッシュします。一方、ページ本体のHTMLは既定ではキャッシュしません。HTMLはWordPressのようなプログラムが生成する動的コンテンツであることが多く、うかつにキャッシュすると先ほどのような事故につながるためです。

つまりCloudflareを有効にした直後の状態では、「ページを構成する部品(画像など)はエッジ配信で速くなるが、HTML自体は毎回オリジンサーバーが生成している」という動きになります。HTMLまでキャッシュして高速化する方法(Cache RulesやAPO)もありますが、動的コンテンツの見きわめが前提になる、一歩進んだ設定です。

CloudflareではどうCDNを使うか

特徴:無料・帯域無制限・設定ほぼ不要

CloudflareのCDNには、次の特徴があります。

  • 全プランで利用でき、配信量(帯域)は無制限:無料プランでも、転送量による追加課金や停止がありません。「今月は画像の転送量が多かったので追加料金」という心配が構造的に無いのは、CDNサービスとしては珍しい特徴です
  • 世界330以上の都市にエッジサーバーがある(2026年8月時点):日本国内にも複数の拠点があり、国内の訪問者には国内のエッジサーバーが応答します
  • 設定はほぼ不要:ネームサーバーをCloudflareに切り替え、DNSレコードのプロキシを有効(オレンジ色の雲のマーク)にするだけで、静的ファイルのキャッシュ配信が始まります。このプロキシの仕組みは、次のページで詳しく説明します

キャッシュの削除(パージ)

サイトを更新したのに古い表示が残るときは、キャッシュを手動で削除できます。これをパージ(purge)と呼びます。CloudflareのダッシュボードからURL単位・全体一括のどちらでも実行でき、数秒で反映されます。また、サイトの改修作業中だけキャッシュを一時停止する開発モード(Development Mode)も用意されています。

具体例:ブログにCloudflareを導入すると

1日3,000ページビューの個人ブログを考えます。1ページに画像やCSSが平均30ファイルあるとすると、1日あたり約9万件のファイルリクエストが発生します。

CDNなしでは、9万件すべてをレンタルサーバー(オリジンサーバー)が処理します。Cloudflareを入れると、静的ファイルの大部分はエッジサーバーのキャッシュから配信されるため、オリジンサーバーに届くリクエストはHTML生成の3,000件+キャッシュミス分程度まで減ります。訪問者の体感速度が上がると同時に、レンタルサーバーのプラン上限にも余裕が生まれます。海外からのアクセスがあるサイトなら、距離短縮の効果はさらにはっきり現れます。

初心者が注意するポイント

  • 「更新が反映されない」の第一容疑者はキャッシュ:CDN導入後にサイトの変更が見えないときは、まずキャッシュを疑い、パージを実行してください。作業中は開発モードを使うと快適です。なお、ブラウザ自身のキャッシュという別の層もあるため、パージしても直らないときはブラウザのスーパーリロードも試してください
  • 動的なページをむやみにキャッシュしない:Cache Rulesなどで「すべてキャッシュ」のような設定を安易に行うと、ログイン後のページが他人に見える事故につながりかねません。既定でHTMLがキャッシュされないのは安全側の設計だと理解しておきましょう
  • CDNだけでは「何もかも速く」はならない:既定ではHTMLは毎回オリジンサーバーが生成するため、サーバー側の処理が遅いサイトでは、表示開始までの時間は残ります。CDNの効果がどこに効いているのかを切り分けて考えることが大切です
  • キャッシュは拠点ごとに独立:東京のエッジサーバーにキャッシュがあっても、大阪の拠点では初回はキャッシュミスになります。「一度アクセスしたのに速くならない」と感じる一因です

関連サービス

  • Cache Rules:どのURLをどれだけキャッシュするかを細かく制御するルール機能
  • APO(Automatic Platform Optimization):WordPressサイトのHTMLまで安全にキャッシュする有料オプション。後の実践ページで扱います
  • Argo Smart Routing:エッジサーバーとオリジンサーバー間の経路を最適化する有料オプション
  • Cache Reserve:キャッシュを長期保存してヒット率を高める有料オプション

まとめ

  • CDNは、世界中のエッジサーバーにキャッシュ(複製)を置き、訪問者の近くから配信する仕組み
  • 距離による遅延と、オリジンサーバーの負荷という2つの問題を同時に解決する
  • キャッシュにはヒット/ミスがあり、TTLという有効期限で鮮度を保つ
  • キャッシュできるのは静的コンテンツ。Cloudflareの既定ではHTMLはキャッシュされない
  • CloudflareのCDNは全プラン帯域無制限で、プロキシを有効にするだけで動き出す
  • 更新が反映されないときはパージ。動的ページのキャッシュは慎重に

次に読む

→ ガイドの目次に戻る

※本記事の情報は 2026年8月時点のものです。

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