キャッシュ制御とは?あなたが知る必要があるすべて

最終更新日 2025年10月20日
cache-control-blog-header.jpg

キャッシュ制御とは何ですか?

キャッシュ制御は、開発者がユーザーがインターネットを閲覧する際にリソースがどのようにキャッシュされるかを指示することができる重要なハイパーテキスト転送プロトコル(HTTP)メカニズムです。これがない場合、ブラウザのキャッシュは効率が悪くなり、読み込み時間が遅くなり、不必要なオリジンリクエストが発生します。

クライアントとサーバー間で交換されるヘッダーの一部として、キャッシュ制御はブラウザや中間キャッシュにリソースがいつ保存され、再利用される条件を指示します。

有効期限ウィンドウや再検証ルールなどのディレクティブを定義することで、キャッシュ制御は頻繁にアクセスされるアセットをユーザーに近づけ、必要に応じてコンテンツを最新に保ちながら配信を高速化します。

ブラウザキャッシュとは何ですか?

ブラウザキャッシュは、ウェブブラウザがウェブサイトのリソースを一時的に保存して、将来のページ読み込みを高速化するプロセスです。 初回訪問時に、画像、スクリプト、スタイルシートなどのリソースがダウンロードされ、ブラウザキャッシュに保存されます。次回以降の訪問時に、ブラウザはサーバーから再度取得する代わりに、これらのローカルにキャッシュされたコピーを読み込むことができ、遅延を減らし、ユーザー体験を向上させます。

キャッシュ制御ヘッダーは、ブラウザキャッシュを制御する上で重要な役割を果たします。 これらは、リソースがキャッシュに留まる期間(最大経過時間などのディレクティブを使用)、再利用前にサーバーで再検証する必要があるか(キャッシュ不可)、またはまったく保存すべきでないか(保存禁止)を定義します。キャッシュ制御ポリシーを設定することで、開発者はキャッシュされたリソースが新鮮で、効率的に提供され、意図されたパフォーマンスとセキュリティ要件に合致していることを保証します。

キャッシュされたリソースは無期限に保存されるわけではありません。各リソースには、生存時間(TTL)と呼ばれる時間制限があり、それが過ぎると期限切れと見なされます。TTLが期限切れになると、ブラウザはサーバーから新しいコピーをリクエストする必要があります。TTLおよび他のキャッシュルールは通常、キャッシュ制御、期限切れ、またはETagなどのHTTPヘッダーによって定義され、ブラウザにリソースを保持する期間と検証時期を指示します。

HTTPでのキャッシュ制御ヘッダーの動作方法 ?

キャッシュ制御ヘッダーがどのように動作するかを理解するには、まずHTTPヘッダーとは何か、そしてそれがクライアントとサーバー間の通信ルールをどのように定義するかを見ることが重要です。
HTTPヘッダーは、リソース、クライアント、またはサーバーに関する情報を伝えることができ、データ転送、解釈、およびキャッシュのルールを定義します。キャッシュの場合、特定のヘッダーはブラウザや中間者にリソースをどのくらいの期間保存するか、いつ再検証するか、そしてどのように効率的に提供するかを指示します。

広く言えば、HTTPキャッシュヘッダーは4つのカテゴリーに分けられます:

一般ヘッダー

一般ヘッダーは、リクエストとレスポンスの両方に適用されますが、メッセージのコンテンツには直接適用されません。キャッシュ制御は最も重要な例であり、リソースのキャッシュルールを指定します。他の例には、メッセージが送信された日時を示す日付、ネットワーク接続を開いたままにするかどうかを制御する接続があります。

リクエストヘッダー

リクエストヘッダーは、クライアントが何を求めているか、またはその機能に関する情報を提供します。キャッシュでは、最終変更日時以降またはETag不一致時などのヘッダーがサーバーにキャッシュされたバージョンを持っていること、および更新すべき条件を指示します。

レスポンスヘッダー

レスポンスヘッダーには、サーバーがリクエストをどのように処理したかの詳細が含まれます。キャッシュ関連の例には、キャッシュ制御期限切れ、およびETagが含まれ、ブラウザやプロキシがリソースをキャッシュできるか、どのくらいの期間、そしてどのように検証するかを指示します。

エンティティヘッダー

エンティティヘッダーは、コンテンツ自体を説明し、リクエストまたはレスポンスに含まれることができます。キャッシュに関連する例には、リソースのサイズを指定するコンテンツ長、対象となる視聴者を示すコンテンツ言語が含まれます。

一般的なキャッシュ制御ディレクティブの説明

キャッシュ制御ヘッダーには、キャッシュの方法、キャッシュする時期、キャッシュしない時期などの情報が含まれます。これらは、キーと値のペアで構成されるディレクティブです。キーは常に「キャッシュ制御」として表示され、値は右側に表示されます。例えば、「キャッシュ制御: 最大経過時間」はそのようなディレクティブの1つです。

キャッシュ制御ディレクティブは、リクエストディレクティブ(クライアントによって使用される)またはレスポンスディレクティブ(サーバーによって使用される)であることがあります。

以下に、最も一般的なキャッシュ制御ディレクティブのいくつかを示します:

キャッシュ制御: 最大経過時間

最大経過時間ディレクティブは、ブラウザがリクエストが行われた時刻からキャッシュされたHTTPレスポンスを使用できる期間を秒単位で指定します。例えば、最大経過時間=90は、キャッシュされたレスポンスが90秒間有効であることを意味します。キャッシュ制御: 最大経過時間=0を設定すると、ブラウザにキャッシュされたリソースがすぐに古くなったことを指示し、再利用前にサーバーでの再検証を強制します。これは、機密または頻繁に更新されるコンテンツに役立ちます。

画像、CSS、JavaScriptなどの静的ファイルには、積極的なキャッシュが可能です。最大経過時間より古いキャッシュされたレスポンスは、古くなったと呼ばれます。

キャッシュ制御: S-Maxage

S-maxageは最大経過時間ディレクティブに似ていますが、「s」は共有を意味し、共有キャッシュのことを指します。これは、コンテンツ配信ネットワーク(CDN)や他の中間キャッシュに関連します。存在する場合、最大経過時間ディレクティブと期限切れヘッダーフィールドを上書きします。

S-maxage対最大経過時間

s-maxageと最大経過時間の主な違いは、それらの効果の範囲です。s-maxageはCDNやプロキシサーバーなどの共有キャッシュにのみ適用され、両方が存在する場合は最大経過時間よりも優先されます。これにより、共有環境でリソースがどのくらいの期間キャッシュされるかを制御することができます。これは、機密情報がこれらの中間キャッシュに長時間保存されるのを防ぐために重要です。対照的に、最大経過時間は主に個々のユーザーデバイスでのキャッシュを制御するために使用され、パフォーマンスを向上させ、サーバーの負荷を軽減します。

キャッシュ制御: キャッシュ不可

キャッシュ不可ディレクティブは、キャッシュされたリソースがオリジンサーバーをチェックせずに再利用されることを防ぎます。URLのキャッシュされたバージョンを使用する前に、ブラウザはサーバーでそれを再検証する必要があります。この動作は、適切な認証を維持し、リソースの最新バージョンが提供されることを保証するのに役立ちます。

検証は通常、ETagヘッダーを使用して実行され、サーバーがキャッシュされたレスポンスが変更されたかどうかを確認できるようにします。レスポンスが変更されていない場合、ブラウザは再度ダウンロードせずにキャッシュされたコピーを再利用できます。

キャッシュ制御: 保存禁止

保存禁止はキャッシュ不可に似ていますが、より単純です。このディレクティブでは、HTTPレスポンスをキャッシュして再利用することはできません。代わりに、リソースをリクエストし、毎回オリジナルサーバーから完全なレスポンスをダウンロードする必要があります。これは、個人的/プライベートな情報や銀行データを扱う際に特に関連があります。

キャッシュ制御: 変換禁止

リソースがキャッシュサーバーに保存される場合、中間プロキシはこれらのアセットを変更することがあります。例えば、スペースを節約し、パフォーマンスを向上させるために、画像やファイルの形式を変更することがあります。これらの変更は、アセットがオリジナルのエンティティボディと同一のままでなければならない場合に問題を引き起こすことがあります。変換禁止ディレクティブは、中間キャッシュやプロキシに、レスポンスボディ、コンテンツエンコーディング、コンテンツ範囲、またはコンテンツタイプの編集を含む、そのような変更を加えないように指示します。

プライベート対パブリックキャッシュ制御

パブリックキャッシュ制御とは、リソースがサーバーとクライアント間の中間者(プロキシサーバーなど)によってキャッシュされる可能性があることを意味し、キャッシュ制御パブリックディレクティブによって有効になります。プライベートキャッシュ制御とは、リソースがユーザーのブラウザによってのみキャッシュされ、他の中間者によってキャッシュされることがないことを意味し、開発者はキャッシュ制御プライベートディレクティブを使用します。

**セキュリティの観点から、プライベートキャッシュ制御は一般的に優れています。なぜなら、機密情報が意図しない当事者によってキャッシュされるリスクを減らすからです。**例えば、ウェブページに顧客アカウント情報が含まれている場合、キャッシュ制御ヘッダーをプライベートに設定すると、この情報が他のユーザーが使用する可能性のあるプロキシサーバーにキャッシュされることがなくなります。

しかし、パブリックキャッシュ制御は、中間者がセキュリティ上の懸念なしに安全にキャッシュできる特定のリソースに必要な場合があります。公開されている画像やCSSファイルなどです。この場合、リソースが機密でないこと、および機密データへの不正アクセスを防ぐために適切なキャッシュディレクティブが使用されていることを確認することが重要です。

要するに、プライベート対パブリックキャッシュ制御の選択は、リクエストされているリソースの性質とアプリケーションのセキュリティ要件によって異なります。 セキュリティ専門家として、これらの違いを理解し、セキュリティリスクを最小限に抑えるために適切なキャッシュディレクティブが使用されていることを確認することが重要です。

CDNをキャッシュ制御ヘッダーと共に使用する利点

キャッシュ制御をブラウザを超えて拡張し、リージョン間での配信を改善するために、CDNはエッジロケーションでウェブリソースを保存します。毎リクエストごとにオリジンからコンテンツを取得するのではなく、プロキシサーバーはこれらのアセットを一時的にキャッシュし、後続の訪問時に即座に返します。

CDNetworksなどのモダンなプラットフォームは、きめ細かいキャッシュポリシーと、コンテンツの動作にリアルタイムで適応するプログラマブルエッジロジックを使用して、キャッシュ制御戦略を強化します。

Requests-Diagram.png

CDNは、キャッシュ制御を3つの主要な方法で強化します:

1. キャッシュポリシー管理を簡素化する

ウェブ開発者が手動でファイルタイプにタグを付け、調整し、異なるキャッシュヘッダーをすべて管理することは圧倒的です。CDNは、ユーザーフレンドリーなダッシュボードを使用して、キャッシュポリシー管理を簡素化するのに役立ちます。管理者は、必要に応じて、特定のファイルやファイルタイプを制御するために、キャッシュヘッダーディレクティブをオーバーライドできます。

2. プロキシを使用してブラウザキャッシュを強化する

ブラウザキャッシュ自体は、初回訪問後にウェブサイトのリソースをローカルドライブにダウンロードする仕事をします。CDNは、プロキシを使用して、これらのローカルに保存されたリソースの配信を加速することができます。
これは、コンテンツをサイト訪問者に近づけ、単一のキャッシュされたコピーが複数の訪問者に提供されることを保証するのに役立ちます。また、ブラウザがサイトコンテンツをまだキャッシュしていない初回訪問者に対しても、リソースを迅速に配信できます。

3. 機械学習を使用してキャッシュを自動化する

より高度なCDNの一部は、機械学習(ML)を使用してキャッシュ制御を自動化することができます。MLアルゴリズムは、コンテンツの使用パターンを追跡し、動的に生成されたコンテンツやリソースをキャッシュできます。

例えば、長い間あまり変更されていないHTMLファイルは、静的としてラベル付けされ、キャッシュ可能として分類できます。それは、CDNサーバーから直接提供され、ページの読み込みとレスポンシブネスを高速化できます。アルゴリズムは、ページのステータスを追跡し、変更があるとすぐに動的として分類し続けることができます。これにより、ストレージとキャッシュポリシーが最適化され、コンテンツ配信速度が向上します。

キャッシュ制御に関するよくある質問

キャッシュ制御はキャッシュ動作に必要ですか?

ブラウザはデフォルトのヒューリスティックを使用してキャッシュする場合がありますが、明示的なキャッシュ制御ヘッダーがない場合、キャッシュ動作は予測不可能です。

キャッシュ制御は何に設定すべきですか?

理想的なキャッシュ制御設定は、リソースのタイプと変更頻度によって異なります。画像やフォントなどの静的アセットには、キャッシュ制御: 最大経過時間不変を使用して、長期間のキャッシュを行います。動的または機密コンテンツには、キャッシュ制御: キャッシュ不可またはキャッシュ制御: プライベートを使用して、新鮮さとセキュリティを保証します。

CDNがなくてもキャッシュ制御は動作しますか?

はい、ブラウザキャッシュを制御します。CDNは、同じディレクティブをエッジサーバーに拡張して、グローバルな配信を高速化します。

動的コンテンツやパーソナライズされたページのキャッシュは安全ですか?

はい、適切なキャッシュ戦略があれば、機密コンテンツのキャッシュを回避しながら、パブリックコンポーネントをキャッシュできます。CDNetworksなどのプラットフォームは、動的コンテンツ加速をエッジロジックでサポートし、スピードとセキュリティの両方を維持します。

CDNetworksを無料で試す

ほとんどの製品は14日間の無料トライアルがあります。クレジットカードは不要です。

さらに探検する

クラウドセキュリティ

すべての企業に最新の DDoS 保護サービスが必要な理由

現代のDDoS攻撃はより高速かつ巧妙になり、阻止が困難になっています。進化する脅威に先手を打ってアプリケーションのオンライン状態を維持するには、あらゆる企業が最新のDDoS防御サービスを必要としています。

もっと読む »
クラウドセキュリティ

CDNetworksのAIを活用したセキュリティで、進化する脅威にも耐える耐性を維持

CDNetworks では、AI をセキュリティ アプローチの基盤に完全に統合し、組織が回復力のあるセキュリティ体制を維持できるようにしています。

もっと読む »