CDNのキャッシュ動作とは? トリガーやタイミングについての解説

2023.03.30

J-Stream CDNext

CDNext紹介

CDNのイメージ

CDNはオリジンサーバーへアクセスし、ファイルをキャッシュして配信していますが、CDNとオリジンサーバーは常に通信し合っている訳ではありません。CDNはどのようなルールでオリジンサーバーからキャッシュを取得しているか、Jストリームが提供するCDNサービス「J-stream CDNext」を例に解説します。

1. CDNはオリジンサーバーと通信している

CDNはオリジンサーバーに代わってクライアントに対してファイルを配信する仕組みですが、CDNの導入によってオリジンサーバーが全くファイルを配信しなくなるわけではありません。クライアントがオリジンサーバーに対して直接リクエストを行うことが無くなったとしても、CDNは配信するファイルのキャッシュを取得するために、オリジンサーバーに対してリクエストをして、オリジンサーバーからファイルの応答を受けます。オリジンサーバーのアクセスログには、CDNのキャッシュサーバーのIPアドレスからアクセスされた履歴だけが蓄積されていくことになります。

CDNの配信イメージ
オリジンサーバーは基本的にCDNからのアクセスだけを受ける。

ただしCDNとオリジンサーバーは常に通信し合っている訳ではありません。CDNは多くの場合、オリジンサーバーの配信負荷を軽減する効果を期待して導入されます。クライアントからのリクエストはなるべくCDNだけの力でレスポンス出来た方が、CDNサービスの利用効率が高いということになります。

2. CDNがオリジンサーバーと通信を行うタイミング

ではCDNはどのようなタイミングでオリジンサーバーへファイルの取得を行うのでしょうか。「J-stream CDNext」の場合、クライアントから初回のリクエストが届いた時に初めてオリジンサーバーへ通信を行います。

CDNがオリジンサーバーと通信を行うタイミングを説明する図
CDNextがキャッシュを持っていない状態の時の一人目のリクエストがきっかけになる。

CDNextはCDNとして機能するように設定が完了しただけの状態の時にはまだファイルをキャッシュしていません。初めてクライアントからのリクエストを受け取ったCDNextは、配信すべきファイルをキャッシュサーバーに保持していない状態なので、この時にオリジンサーバーへアクセスを行います。オリジンサーバーはCDNの要求に応えてファイルを配信し、この通信の際にCDNextはファイルをキャッシュすることになります。二人目のクライアントからリクエストが届いた際には、CDNは一人目のリクエストの時にキャッシュしたファイルを持っているので、オリジンサーバーへは通信を行わずに、配信を行うことができます。

3. 予めキャッシュを用意しておくプリフェッチ

CDNがオリジンサーバーへ通信してファイルをキャッシュすることをフェッチと呼びます。前述の内容を当てはめると、CDNextはクライアントからのリクエストをきっかけにフェッチの要求をオリジンサーバーに対して行う、ということになります。

ではフェッチが完了する前に二人目のクライアントからのリクエストが届いてしまった時はどうなるでしょうか。CDNextはまだファイルをキャッシュし切れていないので、二人目のクライアントに配信すべきファイルを持っていません。そのため、二人目のクライアントのリクエストをきっかけにしたオリジンサーバーへの通信も行われてしまうことになります。

例えばSNSを通じた告知を経由して同時にアクセスされる集客ページや、○時○分に一斉にオープンするWebページなどの場合、フェッチが済んでいないためにCDNの配信能力を十分に生かしきれない可能性があるばかりか、オリジンサーバーへの負荷も軽減出来なくなってしまうことがあります。そのような懸念がある場合には、予めフェッチを行っておく「プリフェッチ」の機能が有効です。プリフェッチはその名の通り、予めフェッチを行っておくことができる機能です。

CDNextの管理画面
CDNextの管理画面。
プリフェッチする範囲を指定して予めフェッチを実行する。APIでの実行も可能。

これにより、まだ誰からのリクエストも受けていない状態のファイルであっても事前にキャッシュを用意しておくことができるので、同時刻一斉にWebサイトをリリースするような場合にはこの機能の利用が検討出来ます。

4. フェッチした後の振る舞い

CDNextはファイルを決められた時間だけキャッシュします。この時間のことをTTLと呼びます。TTLはファイルやディレクトリなどの単位で設定することができますが、CDNextではデフォルトで300秒に設定されています。

TTLの期間内は、CDNextはそのキャッシュファイルを最新のファイルと認識して、クライアントへの配信を継続します。TTLが切れると、オリジンサーバー側でファイルが更新されているかも知れないと判断し、一度オリジンサーバーへ更新の有無を確認します。更新されていれば改めて更新後のファイルをキャッシュし、更新されていなければ今までキャッシュしていたファイルのTTLを0秒に戻し、そのまま配信を継続します。

TTLの設定

CDNextではファイルごとにTTLの値を細かく設定することができます。例えば更新頻度の高いページは、オリジンサーバー側でのファイルの更新がすぐキャッシュにも反映されるようにTTLを短くしたり、滅多に変更されない画像コンテンツなどは長くしたり、というような工夫が検討出来ます。

TTLを長めに設定した方が、CDNextからオリジンサーバーへの問い合わせ回数を減らすことができるので、よりオリジンサーバーの負荷軽減に繋がります。ただしいざファイルの更新が必要な時すぐに反映されない点などは注意が必要です。むやみに長く設定をするのではなく、ファイルの性質に合わせて適切な設定を施すことが大切です。

5. キャッシュHIT率の考慮

CDNがオリジンサーバーに代わってファイルの配信を行った割合のことをキャッシュHIT率といいます。例えばキャッシュHIT率が90%の場合、9割のクライアントにはCDNのキャッシュからファイルを配信することができ、残り1割のクライアントからのリクエストへの応答にはオリジンサーバーの稼働を伴ったということになります。
キャッシュHIT率が高い方がオリジンサーバーの稼働を抑えられたということになるので、出来る限りこの数値を高める工夫をした方が良いでしょう。

たくさんのアクセスを集める人気コンテンツや、どのようなクライアントからのリクエストであっても同じファイルを配信する静的なWebサイトなどはキャッシュHIT率が高くなる傾向にあります。CDN側でもキャッシュHIT率を高めるための設定を施すことは可能ですが、配信するWebページ側の工夫によって改善できることもあるので、CDNを利用する際にはWebページ側の作りについても考慮すると良いでしょう。

以上、CDNがファイルのキャッシュを行う挙動について解説しました。Jストリームでは配信するファイルやWebサイトの内容をよくヒアリングしながら、適切な設定を行うサポートサービスを提供しています。専門のノウハウをもったエンジニアが、サービス導入の検討段階からアドバイスを行いますので、お気軽にご相談下さい。

J-Stream CDNext「料金と機能の一覧資料」をダウンロードする

サービス詳細

関連する記事一覧

Jストリームの
ソリューションに
興味をお持ちの方は
お気軽に
お問い合わせください。

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)

登録無料!

Jストリームのサービスを活用した成功事例や、お客さまの課題解決につながるお役立ち情報などをメールでお届けしています。

メールマガジン登録

電話でのお問い合わせ

0120-658140

【受付時間】9:30~18:30(土日祝日を除く)