CDNを使うと、利用者のブラウザは多くの場合、直接オリジンサーバーへ行くのではなく、CDNのエッジサーバーへ接続します。
一言でいうと
CDNを使うと、DNSは利用者をCDNへ向け、CDNがキャッシュまたはオリジン取得によってWebサイトを返します。
CDNなしの流れ
ブラウザ
-> DNSでサーバーを調べる
-> Webサーバーへ接続する
-> HTML/CSS/JSを受け取る
シンプルですが、利用者が遠い場所にいる場合やアクセスが多い場合、サーバー負荷や遅延が大きくなることがあります。
CDNありの流れ
ブラウザ
-> DNSでCDNの配信先を調べる
-> 近いエッジサーバーへ接続する
-> キャッシュがあればCDNが返す
-> なければオリジンから取得して返す
CDNの裏側にある元のサーバーをオリジンと呼びます。
登場人物
| 登場人物 | 役割 |
|---|---|
| ブラウザ | URLを開く利用者側 |
| DNS | ドメインをCDNの配信先へ向ける |
| CDNエッジ | 利用者に近い場所で配信する |
| オリジン | 元データを持つサーバーやホスティング |
| キャッシュ | 一度取得した内容を再利用する仕組み |
DNS設定はどう変わるか
CDNを使う場合、DNSはCDNが指定する宛先へ向けます。
www.example.com. CNAME example-cdn.example.net.
apexドメインでは、CDN事業者の指定に従ってA、ALIAS、ANAMEなどを使うことがあります。
キャッシュで起きること
CDNは、HTML、CSS、JavaScript、画像などをキャッシュできます。
| 状態 | 動き |
|---|---|
| キャッシュヒット | CDNがすぐ返す |
| キャッシュミス | CDNがオリジンへ取りに行く |
| キャッシュ期限切れ | 再検証または再取得する |
| パージ | 管理者がキャッシュを削除する |
CDNを使うと、DNSだけでなくCDNキャッシュも表示内容に影響します。
HTTPS証明書もCDN側で考える
CDNが利用者からのHTTPS接続を受ける場合、CDN側で証明書が必要です。さらに、CDNからオリジンへ接続する通信もHTTPSにするのが基本です。
| 区間 | 確認すること |
|---|---|
| ブラウザ -> CDN | 公開ドメインの証明書 |
| CDN -> オリジン | オリジン側の証明書や設定 |
よくある誤解
| 誤解 | 実際 |
|---|---|
| CDNを入れると必ず速くなる | キャッシュ設定や配信内容によります |
| DNSを変えれば古い表示は消える | CDNキャッシュが残る場合があります |
| CDNがあればオリジンは不要 | 元データや動的処理の場所が必要です |
| HTTPSはオリジンだけでよい | ブラウザとCDN間の証明書も必要です |
まとめ
CDNを使うと、ドメインはCDNへ向き、CDNがキャッシュまたはオリジン取得でコンテンツを返します。表示不具合では、DNS、CDN証明書、オリジン接続、キャッシュを分けて確認します。