はじめに
本記事では、CDN(コンテンツ配信ネットワーク)で使われるTTL(Time To Live)について、基礎から実践までを分かりやすく解説します。TTLはキャッシュの有効期限を決める仕組みで、表示速度や更新反映に大きく影響します。技術的な背景も扱いますが、専門用語はできるだけ抑え、具体例を交えて丁寧に説明します。
目的
CDNのTTLを正しく理解し、適切に設定できるようになることが目的です。サイトの表示速度向上、更新時の反映遅延の回避、運用コストの最適化につなげます。
対象読者
Webサイト運営者、開発者、インフラ担当者、CDN導入を検討している方を想定しています。初心者の方でも読み進められるよう配慮しています。
本記事の構成
全8章で進めます。第2章でTTLの基本、第3章でCDNとの関係、第4章で設定方法と注意点、第5章で運用への影響、第6章でDNSとの違い、第7章で具体的な設定例、第8章でベストプラクティスとトラブル対策を解説します。次章から順に見ていきましょう。
TTL(Time To Live)とは何か
基本の意味
TTLは「Time To Live」の略で、直訳すると「生存時間」です。データやキャッシュが有効とみなされる期間や回数を示します。指定した時間や回数を過ぎると、そのデータは破棄され、必要に応じて元の場所から再取得されます。
ネットワークでの使い方(ホップ数)
パケットのTTLはルーターを何回まで通過できるかを示す整数です。値が1ずつ減り、0になると破棄されます。これは無限ループを防ぐ仕組みです。
CDN/DNSでの使い方(有効期間)
CDNやDNSではTTLを時間(通常は秒)で設定します。たとえばTTLが300なら5分間、その情報をキャッシュして使います。TTL切れでキャッシュはオリジンサーバーへ問い合わせて最新情報を取得します。
具体例でイメージ
・画像やCSSは変更が少ないためTTLを長く(例:86400秒=1日)にして負荷を下げます。
・頻繁に変わるページは短め(例:60秒)にして最新性を保ちます。
メリットと注意点
長めのTTLはオリジンへの負荷を減らし表示を速くします。短めのTTLは更新を素早く反映します。どちらも一長一短なので、更新頻度と負荷のバランスを考えて設定します。
CDNにおけるTTLの役割
TTLの基本役割
CDNはエッジサーバーにコンテンツを置き、利用者へ高速に配信します。TTLはその保存期間を決めます。エッジはTTLが切れるまでキャッシュを返し、切れたらオリジンへ取りに行きます。
TTLが実際に変えること
- 表示速度:TTLが長いと多くのリクエストをエッジでさばけるため速くなります。
- オリジン負荷:短いTTLはオリジンへのアクセスを増やし負荷と帯域を増やします。
- 新着反映の速さ:短いTTLは更新がすぐ反映されます。
運用上の注意点
- 静的資産(画像、CSS、JS)は長め、例:数日〜数週間。更新する場合はファイル名にバージョンを付けて長めTTLを使います。
- HTMLのような動的ページは短め、例:数秒〜数分か、キャッシュ無効化を設けます。
- パスやクエリごとにTTLを変えられるCDNを利用すると柔軟です。
- 緊急更新時はパージ(キャッシュ削除)やバージョン管理で確実に反映します。
具体的な動作例
画像にTTLを7日と設定すると、エッジは7日間同じ画像を返します。サイト更新時に画像を差し替えるなら、ファイル名にバージョンを付けて長いTTLを維持できます。
TTLの設定方法と注意点
概要
CDN導入や設定変更時はTTL(キャッシュ保持時間)の調整が重要です。TTLは秒単位で指定し、サイトの更新頻度や負荷に合わせて決めます。基本は24時間(86400秒)が目安ですが、用途によって短くも長くもします。
設定手順(実務でよく使う流れ)
- キャッシュ対象の選定
- 画像やCSS、JSは長めに(例:86400〜2592000秒)。
-
頻繁に変わるAPIレスポンスやHTMLは短めに(例:0〜600秒)。
-
CDNのキャッシュルール設定
-
CDN管理画面でパスごとにTTLを設定します。ヘッダー優先(Cache-Control)やCDN設定の優先順位を確認してください。具体例:/assets/ を86400、/api/ を60に設定。
-
DNSのTTL調整
-
ドメイン移行やダウンタイム対策ではDNSのTTLも短くします(例:300秒)。通常運用では長めにしてOKです。
-
検証と監視
- ブラウザ開発ツールやcurlでレスポンスヘッダー(Age, Cache-Control, Expires)を確認します。CDN特有のヘッダー(例:X-Cache)でキャッシュヒット率を確認してください。
実務上の注意点
- TTLを0にすると常にオリジンから取得し、負荷が高くなります。
- 長いTTLは一時的に古いコンテンツを配信するリスクがあります。ファイル名にバージョンを付ける(例: style.v2.css)やクエリストリングでキャッシュを破棄すると安全です。
- デプロイ直後は短めのTTLで様子を見て、安定したら延ばす運用が安全です。
- 緊急時はパージ(invalidate)機能を使い、必要な範囲だけ即時更新してください。
テスト例(簡単)
- curl -I https://example.com/path でCache-ControlとAgeを確認。Ageが0ならオリジン取得、0以外はCDNにキャッシュありです。
設定はサイトの特性に合わせて調整してください。
TTLがサイト運営やパフォーマンスに与える影響
表示速度とユーザー体験
TTLが長ければCDNやブラウザのキャッシュを有効に活用でき、ページ表示が速くなります。たとえば画像やスタイルシートは長めのTTLにすると読み込みが早まり、体感速度が向上します。逆に短いTTLだと更新は早く反映しますが、初回や更新直後の読み込みが遅くなる場合があります。
サーバー負荷とトラフィック
長めのTTLはオリジンサーバーへのリクエストを減らしサーバー負荷を下げます。短すぎるTTLはキャッシュの有効期間が短く、リクエストが増えて負荷や帯域使用量が上がります。運用コストやスケーリング計画にも影響します。
情報の鮮度と更新反映
ニュースや価格表示など頻繁に更新する情報は短めのTTLにします。静的な資産は長めにして問題ありません。頻繁に更新するページはバージョニングやキャッシュ無効化(パージ)を併用すると、TTLを長く保ちながら確実に更新を反映できます。
バランスの取り方と運用のコツ
- 資産ごとにTTLを分ける(画像・CSSは長め、HTMLは短め)。
- 重要な更新時はパージやバージョニングで即時反映する。
- ログや監視でヒット率とオリジン負荷を確認し調整する。
ケース別の目安(例)
- 静的ファイル:数時間〜数週間
- 動的ページ:数分〜数時間
- APIレスポンス:数秒〜数分(内容により調整)
これらを組み合わせて、表示速度・負荷・鮮度のバランスを取りながらTTLを設定してください。
DNSレコードのTTLとの違い・関連性
概要
DNSのTTLはドメイン名とIPアドレスなどの情報をDNSキャッシュが保持する時間を決めます。CDNのTTLは静的ファイルや応答をエッジで保持する時間を決めます。役割が異なるため、両方を別々に考える必要があります。
主な違い(わかりやすく)
- 対象が違う:DNS TTLは“どのサーバーに接続するか”の情報、CDN TTLは“そのサーバーが持つコンテンツ”の情報を制御します。
- 反映の速さと負荷:DNS TTLを短くするとIP変更が早く反映されますがDNSサーバーへの問い合わせが増えます。CDN TTLを短くするとオリジンサーバーへの負荷が増えます。
具体例
- サイトのIPアドレスを変える場合:DNS TTLが短ければ利用者は早く新しいIP先に届きます。CDNの設定は直接関係しないことが多いです。
- コンテンツ差し替えの場合:CDN TTLが短ければすぐに新しいファイルが配信されます。DNSは関係ありません。
運用上の注意と手順(実務向け)
- 大きな移行前にDNS TTLを短く(例:3600→300秒)に変更しておく。
- CDN側のキャッシュ設定(およびキャッシュクリア機能)を確認する。
- 変更完了後、安定したらDNS TTLを元に戻すことで問い合わせを抑える。
よくある誤解
CDNのTTLを下げればDNSの切り替えも速くなると誤解されがちですが、両者は独立して動きます。両方を適切に設定するとサイトの安定と切り替えの速さを両立できます。
実際のCDN設定例と運用ポイント
Cloudflareの設定例
Cloudflareでは「鮮度(TTL)」と「保持期間(Retention)」を分けて設定できます。例として、画像やCSSは24時間〜30日、HTMLは60〜300秒に設定することが多いです。ページ単位やパス単位でルールを作り、静的と動的を分けて運用します。動的ページはCache-Control: no-cacheや短いTTLにし、更新時は「キャッシュパージ(Purge)」で即時反映します。
Fastlyの設定例
FastlyはVCLで細かく制御できます。パスやヘッダーでTTLを変え、サーバー側のSurrogate-Controlヘッダーを優先させる運用が一般的です。バージョン管理(設定のバージョン化)で変更を安全にロールアウトし、問題があれば前のバージョンに戻します。
Adobe CDN(enableTTLとDispatcher)
Adobe CDNではenableTTLでDispatcher側からTTLを制御できます。Dispatcherのルールでコンテンツ種別ごとにTTLを設定し、開発環境で動作検証してから本番に適用してください。
運用時のチェックリスト
- パスごとのTTL設定を明確にする(静的は長め、動的は短め)
- Cache-ControlやSurrogate-Controlを正しく送る
- キャッシュパージの手順と権限を定める
- ステージングで検証し、ログでキャッシュヒット率を確認
- キャッシュキーに含める要素(クエリ、クッキー)を決める
トラブル対策(よくある失敗と対処)
- 更新が反映されない:パージかバージョン付与(ファイル名変更)を行う
- 予期せぬキャッシュミス:クッキーや認証ヘッダーを確認する
- 設定変更で不具合が出た:即時ロールバックとプロバイダ連携で原因調査
設定変更時は必ずサーバー管理者とCDN提供元で仕様確認と動作検証を行い、不具合やキャッシュミスを未然に防いでください。
TTL設定のベストプラクティスとトラブル対策
推奨TTLの目安
- 静的ファイル(画像・フォント・CSS・JS):7日〜30日、長くしてファイル名にバージョンを付ける(例:app.v2.css)。
- HTMLページ:数秒〜数時間。更新頻度が高い場合は短め(例:60秒〜300秒)。
- APIレスポンス:リアルタイム性が必要なら0〜60秒、キャッシュ可能な結果は短めに設定。
運用のコツ
- 長めTTLにする場合はキャッシュバスティング(ファイル名やクエリ)で更新を確実に反映します。例:style.v202510.css。
- 一時的に変更を即時反映したいときはTTLを短くするか、CDNのパージ機能を使います。パージは確実ですが回数制限や遅延があるので注意します。
- HTTPヘッダー(Cache-Control, Surrogate-Control)を正しく付け、ブラウザとCDNの両方に期待する動作を伝えます。
よくあるトラブルと対策
- コンテンツが更新されない:まずCDNとブラウザ両方のキャッシュを確認し、必要ならパージか短TTLに切替えます。バージョン管理が有効です。
- 古い404やエラーが残る:エラー応答もキャッシュされることを確認し、エラーレスポンスに短いTTLを設定します。
- クッキーや認証で変わる表示:Varyヘッダーやパス分割でキャッシュを分けます。
テストと監視
- PageSpeedやブラウザ開発ツールでキャッシュヘッダーを定期確認します。アクセスログでヒット率やオリジン負荷を監視し、TTLを調整します。
運用では「サイトの性質に合わせる」ことを優先し、必要時にTTLを短くして反映、落ち着いたら再び長めに戻す流れが実用的です。












