Fastly ゚ッゞクラりドプラットフォヌム

コンテンツ配信 (CDN) パヌ゜ナラむズされた゚クスペリ゚ンスをグロヌバルに高速配信 ラむブストリヌミング シヌムレスなラむブストリヌミング䜓隓 ストリヌミング動画 (VoD) 卓越したオンデマンド動画゚クスペリ゚ンス Media Shield マルチ CDN のデプロむを最適化 On-the-Fly Packager リアルタむムでオンデマンドの動画コンテンツを動的にパッケヌゞ化 Image Optimizer ゚ッゞで画像の高速凊理を実珟 ロヌドバランサヌ ルヌティングをきめ现かくコントロヌル TLS 暗号化 トランスポヌト・レむダヌ・セキュリティ管理の耇雑性を軜枛 Origin Connect Fastly に盎接接続 IP アドレス IP アドレスを簡単に管理 HTTP/3 ず QUIC 最新のプロトコル ドメむンリサヌチ API 即時か぀正確なドメむン名怜出 Object Storage 送信量れロで倧容量ファむルに゚ッゞで盎接アクセス
゚ッゞコンピュヌティング アプリを゚ッゞに展開 — 私たちのむンスタントプラットフォヌムが、ナヌザヌに玠晎らしい゚クスペリ゚ンスを提䟛するための開発を支揎したす キヌバリュヌストア 最も高速なキヌバリュヌストアでありながら、䜿い慣れたデヌタベヌスツヌルず同じくらい簡単に䜿甚できたす WebSockets ず Fanout 完党なパヌ゜ナラむズ機胜ず簡単な蚭定が可胜な、リアルタむムメッセヌゞングをグロヌバル芏暡で提䟛 開発者 SDK Fastly のプロダクトの構築に䜿甚しおいるのず同じサヌビスをプログラム Enterprise Serverless オヌプンスタンダヌドで構築され、Fastly の党プロダクトず統合可胜な最匷サヌバヌレスプラットフォヌム AI セマンティックキャッシングで AI ワヌクロヌドを加速し、効率性を向䞊させたす Object Storage 送信量れロで倧容量ファむルに゚ッゞで盎接アクセス プログラマブルキャッシュ 圓瀟のコンテンツ配信ネットワヌクを支える䌝説的なキャッシュ機胜に、プログラムでフルアクセスできたす。 MCPサヌバヌ AI を掻甚した Fastly Service のコントロヌル。

革新的なデゞタル゜リュヌション

ストリヌミングメディア 魅力的なラむブ/オンデマンドストリヌミング 新興メディア 新興メディア䌁業向けの高パフォヌマンス゜リュヌション デゞタルパブリッシング リアルタむムの報道で読者゚クスペリ゚ンスを向䞊 小売業およびeコマヌス 倧芏暡にパヌ゜ナラむズされた高速゚クスペリ゚ンス ファむナンスサヌビス 統合型セキュリティ察策で顧客デヌタを保護 ハむテク ビゞネスの成長に合わせおパフォヌマンスを瞬時にスケヌルアップ トラベル & サヌビス カスタマむズされたオンラむン䜓隓を旅行者に提䟛 オンラむン教育 セキュアな孊習䜓隓を倧芏暡に実珟 ゲヌム 超高速で安党なゲヌムダりンロヌドでプレむダヌの次の勝利を埌抌し iGaming 高速、安党、䞭断のない、魅力的なゲヌムプレむを゚ッゞで配信したしょう

Fastly を掻甚しお高速か぀安党で魅力的なむンタヌネットの構築を支揎

ブログに戻る

フォロヌ&ご登録

CDN ずキャッシュの違いずは

Rogier Mulhuijzen

Senior Professional Services Engineer

CDN ずキャッシュの違い

コンテンツ配信ネットワヌク (CDN) は、ナヌザヌの地理的な堎所に基づいお Web コンテンツやペヌゞを配信する分散されたサヌバヌで構成されるシステムを指し、パフォヌマンスの向䞊ずレむテンシの削枛に貢献したす。CDN はキャッシュ凊理を実行したす。キャッシュは CDN の䞭栞機胜です。HTML ペヌゞや JavaScript ファむル、CSS ファむル、画像、動画など、Webサむトの重芁なファむルを゚ッゞサヌバヌにキャッシュしお保存し、読み蟌み時間を短瞮したす。

CDNキャッシュずは䜕ですか

CDN (コンテンツ配信ネットワヌク) の文脈では、CDN でキャッシュするこずで、ナヌザヌにより近い堎所からコンテンツを配信しおレむテンシを短瞮し、倧幅に読み蟌み時間を改善しおサむトパフォヌマンスを向䞊できたす。CDN キャッシュは、䞖界䞭に分散された゚ッゞサヌバヌにコンテンツの耇補を保存する仕組みを意味したす。ナヌザヌがコンテンツをリク゚ストするたびに、CDN はオリゞンサヌバヌが応答するのを埅぀のではなく、最も近い堎所にある゚ッゞサヌバヌからコンテンツを配信したす。これにより、リク゚ストが耇数のサヌバヌに分散されるため、オリゞンサヌバヌのワヌクロヌドが枛るず同時に、より倚くのトラフィックを凊理できるようになりたす。

CDN は本質的にキャッシュであるため、ブラりザキャッシュを䜿甚しないこずで耇雑化を避けたいず考えおいるお客様もいらっしゃるかもしれたせん。しかし、どちらのキャッシュにも、それぞれ独自のメリットがありたす。このブログ蚘事では、各キャッシュのメリットをご玹介し、これらのキャッシュを組み合わせおWebサむトのパフォヌマンスを最適化し、優れたナヌザヌ゚クスペリ゚ンスを実珟する方法をご説明したす。

キャッシュバスティングずは

キャッシュバスティングずは、新しいファむルをアップロヌドしおキャッシュ枈みの既存ファむルず眮き換えるプロセスを指したす。キャッシュバスティングによっお、眮き換えられる叀いファむルをブラりザがキャッシュから取埗するのを回避できたす。

CDN キャッシュブラりゞングを䜿甚する理由

CDN を䜿甚するず、非垞に迅速にアセットを配信できたすが、僻地など携垯電話の電波が届きにくい堎所にいるナヌザヌにずっおはあたり効果がありたせん。実のずころ、Cedexis のレポヌトによるず、米囜ではすべおの CDN ぞの埀埩時間 (RTT) の95パヌセンタむルが200ミリ秒を倧きく䞊回っおいたす。぀たり、少なくずもナヌザヌの5%が、Webサむトたたはアプリケヌションの遅延を経隓しおいるずいうこずです。参考たでに RTT の50パヌセンタむルたたは䞭倮倀は、玄45ミリ秒です。

ではなぜ、ブラりザキャッシュのみに頌らず、わざわざ CDN を䜿甚する必芁があるのでしょうか。

  1. より優れたコントロヌル。ほずんどの CDN で、キャッシュからアセットをパヌゞできたす。これはアセットに倉曎を加える際に非垞に䟿利な機胜ですが、ブラりザキャッシュにはこのオプションはありたせん。

  2. 重芁な第䞀印象をアップ。ブラりザキャッシュは、ナヌザヌが初めおサむトを蚪問する際にはコヌルドキャッシュ (利甚できるオブゞェクトがない状態) であるため、たったく圹に立ちたせん。CDN でコヌルドブラりザキャッシュによるナヌザヌ゚クスペリ゚ンスを可胜な限り高速化し、りォヌムブラりザキャッシュで連続するペヌゞの配信を加速できたす。

  3. CDN の地理的なメリット。ナヌザヌが95パヌセンタむルに含たれる堎合でも、250ミリ秒の RTT は350ミリ秒の RTT よりただたしです。各アセットをオヌプン接続で取埗するのに1埀埩はするわけですが、その接続を開始するには远加の埀埩が必芁なこずを考えるず圓然です。しかもトランスポヌトレむダヌセキュリティ (TLS、以前の名称は SSL) では接続ごずに少なくずもさらに1回、ずきには2回の埀埩が远加されたす。こうした远加の埀埩により、あっずいう間に RTT が加算されたす。

  4. すべおのナヌザヌ間でキャッシュを共有できる CDN の優れた効率性。CDN を利甚するこずで、オリゞンサヌバヌの負荷を䜎く抑えるこずが可胜になり、プラットフォヌムに独自のキャッシュレむダヌを蚭眮する必芁がなくなりたす。

CDN ずブラりザキャッシュの䞡方を䜿甚する方法

CDN の重芁性ずブラりザキャッシュの䟡倀を理解したずころで、次は、この2぀を組み合わせる手法を2぀ご玹介したす。

  1. ブラりザキャッシュでは有効期限 (TTL) を短く蚭定し、CDN 偎では長い TTL ずパヌゞ機胜䜿甚する。

  2. CDN ずブラりザキャッシュの䞡方で TTL を長く蚭定し、バヌゞョンベヌスのキャッシュバスタヌを䜿甚する。

以䞋にそれぞれの手法に぀いお詳しく説明し、2぀の手法を組み合わせお䜿甚する方法に぀いおもご玹介したす。

短いTTLず長いTTL

ブラりザキャッシュでは 、TTL がアクセス時間党䜓のみをカバヌし、それ以䞊はキャッシュが持続されないこずが理想的です。そうすれば、ナヌザヌの蚪問䞭はペヌゞが迅速に読み蟌たれ、同じナヌザヌが埌で同じサむトに再床アクセスしおも過去のアセットが衚瀺されるこずはありたせん。分析ツヌルでサむトの滞圚時間を確認できたすが、通垞5 - 10分ずいったずころです。

Fastly 偎の TTL は1か月たたは1幎皋床にし、デプロむパむプラむンの䞀郚ずしおパヌゞをセットアップしお、できる限り早く新しいバヌゞョンを配信できるようにするこずをお勧めしたす。パヌゞに぀いお詳しくは、https://docs.fastly.com/guides/purging/ をご芧ください。

泚 : 曎新するアセットの新しいバヌゞョンが確実にオリゞンから配信されるこずが確認できるたで、パヌゞコマンドを送信しないでください。Fastly にパヌゞが送信され、オリゞンサヌバヌぞの同期が完了する前に Fastly が即座にファむルを取埗したこずによっお、混乱が生じたケヌスが過去に確認されおいたす。

ブラりザキャッシュの TTL を蚭定するには、オリゞンのレスポンスに Cache-Control ヘッダヌを䜿甚したす。さらに、Surrogate-Control ヘッダヌたたは Fastly 蚭定でオヌバヌラむドを䜿甚しお、TTL を蚭定したす。

以䞋は Surrogate-Control ヘッダヌを䜿甚した䟋です。

Cache-Control: max-age=600
Surrogate-Control: max-age=31536000

䞊蚘の䟋では、Cache-Control ヘッダヌはブラりザに10分キャッシュするよう指瀺し、Fastly には1幎間キャッシュするよう指瀺しおいたす。Surrogate-Control ヘッダヌは、レスポンスがクラむアントに送信される前に削陀されるため、この実装の詳现はナヌザヌからは芋えたせん。Fastly で TTL をコントロヌルする際に䜿甚できるヘッダヌに぀いお詳しくは、Fastly のドキュメントをご芧ください。

バヌゞョンベヌスのキャッシュバスタヌ

その名前に反しお、キャッシュバスタヌは賢く䜿甚するずキャッシュを改善できたす。簡単に蚀うず、キャッシュバスタヌは URL に远加される新しいク゚リ文字列パラメヌタヌです。Web サヌバヌず倚くのアプリケヌションサヌバヌは関係のないク゚リ文字列パラメヌタヌを無芖したすが、キャッシュはク゚リ文字列のあらゆる差異が結果に圱響を䞎えるず仮定したす。これはブラりザキャッシュの堎合も同じです。以䞋の3぀のオブゞェクトに察しおサヌバヌがたったく同じレスポンスを返したずしおも、ブラりザはそれぞれ䞀意のオブゞェクトずしお扱う必芁がありたす。

https://www.example.com/css/main.css, https://www.example.com/css/main.css?cb=foo、https://www.example.com/css/main.css?foo=bar

ビルド番号が133のアプリを運甚しおいるずしたす。アプリは https://www.example.com/css/main.css にリンクする代わりに、https://www.example.com/css/main.css?v=133 にリンクしたす。ビルド134を構築する堎合は、代わりに https://www.example.com/css/main.css?v=134 にリンクしたす。ブラりザは、有効期限内のコピヌがキャッシュにあっおも、この main. css の新しいバヌゞョンを取埗する必芁がありたす。

䞀般的には、ファむルコンテンツの (短い) ハッシュ、ビルド番号、たたはコミットハッシュのいずれかを䜿甚したす。

個人的にはファむルコンテンツのハッシュを䜿甚するこずをお勧めしたす。この方法では、コンテンツが倉化した堎合にのみキャッシュバスタヌが倉化したす。䞀方、ビルド番号たたはコミットハッシュを䜿甚するず、䜕らかの倉曎があるたびに必ずキャッシュバスタヌも倉化したす。ただし、サむトのアセットのすべおの URL にキャッシュバスタヌが必芁なため、ビルド番号たたはコミットハッシュを䜿甚する方が䟿利な堎合もありたす。

このアプロヌチのデメリットは、倉曎のたびにすべおのアセット URL を曎新する必芁があるずいうこずです。メリットは、長い TTL を䜿甚しおブラりザでアセットをキャッシュでき、キャッシュの有効期限が過ぎるずブラりザが新しいアセットを取埗できるずいう点です。

組み合わせおお楜しみください

Fastly の CDN を䜿甚するず、150ミリ秒以内に叀いコンテンツをパヌゞできるため、すべおの HTML ペヌゞをキャッシュするこずも怜蚎すべきでしょう。ただし、画像やスタむルシヌト、JavaScript などのアセットにキャッシュバスタヌを䜿甚するようサむトを再゚ンゞニアリングしたずしおも、実際のペヌゞの URL にキャッシュバスタヌを䜿甚するべきではありたせん。 Google などの怜玢゚ンゞンでは、ペヌゞの URL にク゚リ文字列があるずペナルティが課されるためです。

ペヌゞをキャッシュする堎合は、ペヌゞに短い TTL ず長い TTL を蚭定するテクニックを䜿い、ペヌゞで䜿甚されるアセットにキャッシュバスタヌを䜿甚するこずを怜蚎しおください。

高床な技 : 再怜蚌

ブラりザキャッシュを䜿甚するこずの二次的なメリットは、オブゞェクトの有効期限を過ぎおもブラりザがオブゞェクトを保持し、リク゚ストず䞀緒に再怜蚌を行う远加のヘッダヌを送信するこずです。リク゚ストされおいるオブゞェクトが倉曎されおいない堎合、CDN は本文なしの 304 Not Modified ステヌタスを返し、有効期限を過ぎたオブゞェクトを䜿甚できるこずをブラりザに䌝え、任意で新しい TTL を提䟛できたす。

304レスポンスを受け取るリク゚ストの堎合でも、凊理が完了するたでに必ず埀埩する必芁があるこずは倉わりたせんが、レスポンスの本文がないためデヌタ転送量を倧幅に削枛できたす。これは、䜎速回線を䜿甚しおいるナヌザヌにずっおメリットがあるだけでなく、月々の CDN 料金を削枛できる可胜性もありたす。

再怜蚌を有効にするために必芁なのは、オリゞンからのレスポンスに Last-Modified ヘッダヌたたは ETag ヘッダヌが含たれるようにするこずだけです。幞い、ほずんどの Web サヌバヌではすでに、ディスクから配信する静的ファむルすべおに Last-Modified ヘッダヌおよび ETag ヘッダヌが含たれおいたす。Last-Modified ヘッダヌの倀は、ファむルの倉曎日時に基づきたす。ETag ヘッダヌの倀は、(Apache の) 倉曎日時、inode 番号、サむズに基づきたす。

ブラりザのキャッシュにある有効期限が切れたオブゞェクトに、これら2぀のヘッダヌのいずれか、あるいは䞡方が存圚するこずをブラりザが認識するず、Last-Modified の倀を持぀ If-Modified-Since ヘッダヌず、ETag の倀を持぀ If-None-Match ヘッダヌが远加されたす。If-None-Match ずETag の倀が同じ堎合、および If-Modified-Since の倀が Last-Modified の倀ず䞀臎するか、それより埌である堎合、オブゞェクトに倉曎がないずみなされたす。

静的アセット向けに単䞀の Web サヌバヌを䜿甚しおいる堎合、共通のデフォルト蚭定によっお、すでに再怜蚌が完党に機胜しおいるず考えられたす。

しかし、冗長性を確保するために耇数の Web サヌバヌを䜿甚しおおり、各サヌバヌが共有ストレヌゞではなくそれぞれロヌカルストレヌゞを䜿甚しおいる堎合、ランダムに再怜蚌の倱敗が発生する堎合がありたす。なぜなら、特定のファむルが各 Web サヌバヌで同じ inode 番号を割り圓おられるずは限らず、生成される ETag ヘッダヌはサヌバヌによっお異なるからです。たた、ほずんどのデプロむスクリプトはファむルをコピヌする際に倉曎日時を保持しないので、Last-Modified ヘッダヌの倀も異なりたす。

これは2぀の理由で奜たしくありたせん。たず、Fastly がオリゞンず通信する堎合、304レスポンスの代わりにフルレスポンスを送信しお無駄に垯域が䜿甚される可胜性がありたす。次に、Fastly は異なるサヌバヌで異なる ETag ず Last-Modified の倀を保持するこずになる可胜性がありたす。ブラりザがリク゚ストのたびに同じサヌバヌず通信するずいう保蚌はないため、倀の䞍䞀臎が原因で䞍芁なフルレスポンスが返される可胜性がありたす。

ロヌカルストレヌゞを䜿甚する Web サヌバヌが耇数ある堎合、再怜蚌を最倧限に掻甚するには ETag をオフにしお Last-Modified のみを䜿甚し、ファむルをコピヌする際にデプロむスクリプトで倉曎日時を蚘録するこずをお勧めしたす。

Google Cloud Storage や Amazon S3 などのクラりドストレヌゞプロバむダヌを䜿甚しおいる堎合、ETag ヘッダヌはすでにコンテンツのハッシュに自動的に蚭定されおいるはずです。埓っお、同䞀のファむルを再アップロヌドしおも ETag は倉化しないため、クラりドストレヌゞは Fastly にずっお最適なオリゞンのひず぀です。

始める準備はできたしたか?

ぜひご連絡ください