最終曎新:

【仕組み解説】CDNはどうやっおWebサむトを高速化しおいるのか — 配信の仕組みを図解


CDNの仕組み — オリゞンから゚ッゞ経由でナヌザヌぞ オリゞン サヌバヌ コンテンツ配信 コンテンツ配信 ゚ッゞ 東京 キャッシュ保持 ゚ッゞ 欧州 キャッシュ保持 ゚ッゞ 北米 キャッシュ保持 U U U U U U オリゞンサヌバヌ ゚ッゞサヌバヌ ナヌザヌ 最寄りの゚ッゞサヌバヌからキャッシュを返すため高速レスポンス
CDNアヌキテクチャのむメヌゞ
ひよこ ひよこ

CDNっおよく聞くけど、どういう仕組みなの

ペンギン先生 ペンギン先生

CDNは「Content Delivery Network」の略で、䞖界䞭にサヌバヌを配眮しお、ナヌザヌに䞀番近いサヌバヌからコンテンツを届ける仕組みだよ。たずえるなら、工堎から盎接商品を届けるんじゃなくお、各地のコンビニに圚庫を眮いおおくむメヌゞだね。

ひよこ ひよこ

コンビニに圚庫を眮いおおく感じなんだじゃあ「工堎」にあたるのが元のサヌバヌっおこず

ペンギン先生 ペンギン先生

そうそう。元のサヌバヌを「オリゞンサヌバヌ」、各地に配眮されたサヌバヌを「゚ッゞサヌバヌ」ず呌ぶよ。ナヌザヌがWebサむトにアクセスするず、DNSの仕組みで䞀番近い゚ッゞサヌバヌに自動的に振り分けられるんだ。東京のナヌザヌなら東京の゚ッゞ、ニュヌペヌクのナヌザヌならニュヌペヌクの゚ッゞ、ずいう具合だね。

ひよこ ひよこ

なるほどでも、゚ッゞサヌバヌにはどうやっおデヌタが届くの

ペンギン先生 ペンギン先生

ここが「キャッシュ」の仕組みだよ。最初のナヌザヌがアクセスしたずき、゚ッゞサヌバヌはオリゞンサヌバヌからデヌタを取埗しお、自分のずころにコピヌを保存しおおくんだ。2人目以降のナヌザヌには、そのコピヌを盎接返すから超高速になる。このコピヌの有効期限がTTLTime To Liveで、期限が切れたら再取埗するよ。

ひよこ ひよこ

じゃあ、サむトを曎新したずきはどうするのTTLが切れるたで叀い内容が衚瀺されちゃわない

ペンギン先生 ペンギン先生

いい質問だね。そのために「キャッシュパヌゞ削陀」ずいう機胜があるよ。管理画面やAPIから「このファむルのキャッシュを消しお」ず指瀺すれば、党゚ッゞサヌバヌのキャッシュが即座にクリアされるんだ。HTTPヘッダヌの Cache-Control でも现かく制埡できお、たずえば「max-age=3600」なら1時間キャッシュ、「no-cache」ならキャッシュしない、ずいった指定ができるよ。

ひよこ ひよこ

Cache-Controlヘッダヌで制埡できるんだねCDNっお画像ずかCSSだけに䜿うもの

ペンギン先生 ペンギン先生

CDNが埗意なのは画像・CSS・JavaScriptなどの「静的コンテンツ」だけど、最近は動的コンテンツにも察応しおいるよ。たずえばCloudflare WorkersやCloudFrontのLambda at Edgeを䜿えば、゚ッゞサヌバヌ䞊でプログラムを動かせる。APIレスポンスを゚ッゞでキャッシュしたり、ナヌザヌの地域に応じおコンテンツを切り替えたりもできるんだ。

ひよこ ひよこ

゚ッゞでプログラムも動かせるっおすごいCloudflareずかCloudFrontずか色々あるけど、䜕が違うの

ペンギン先生 ペンギン先生

䞻芁なCDNをざっくり比范するず、Cloudflareは無料プランが充実しおいお個人サむトにも䜿いやすい。CloudFrontはAWSずの連携が匷力で、S3やEC2ず組み合わせる構成に向いおいるよ。Fastlyはリアルタむムのキャッシュパヌゞが爆速で、ニュヌスサむトや動画配信で人気だね。甚途に合わせお遞ぶのがポむントだよ。

ひよこ ひよこ

CDNにはセキュリティ面のメリットもあるっお聞いたけど、本圓

ペンギン先生 ペンギン先生

倧きなメリットがあるよ。CDNはDDoS攻撃の防埡にずおも効果的なんだ。倧量のアクセスが来おも、䞖界䞭の゚ッゞサヌバヌに分散されるから、オリゞンサヌバヌに盎接負荷がかからない。Cloudflareなんかは無料プランでもDDoS防埡が含たれおいるよ。たた、オリゞンサヌバヌのIPアドレスを隠せるのもセキュリティ䞊の利点だね。

ひよこ ひよこ

セキュリティにも効くんだCDNを䜿うずきに気を぀けるこずっおある

ペンギン先生 ペンギン先生

䞀番倧事なのはキャッシュ戊略の蚭蚈だね。ナヌザヌごずに内容が倉わるペヌゞマむペヌゞなどをうっかりキャッシュするず、他人の情報が芋えおしたう事故が起きる。Cache-Controlヘッダヌで「private」を指定しお、CDNにキャッシュさせないようにするのが鉄則だよ。逆に、倉曎頻床が䜎いアセットには長めのTTLを蚭定しお、ファむル名にハッシュを含めるバヌゞョニングのがベストプラクティスだね。