開発者ドキュメント

Webキャッシングの基本:用語、HTTPヘッダー、およびキャッシング戦略

序章

インテリジェントコンテンツキャッシングは、サイトの訪問者のエクスペリエンスを向上させるための最も効果的な方法の1つです。 キャッシュ、または以前のリクエストからのコンテンツを一時的に保存することは、HTTPプロトコル内に実装されたコアコンテンツ配信戦略の一部です。 配信パス全体のコンポーネントは、コンテンツに対して宣言されたキャッシュポリシーに従って、すべてのアイテムをキャッシュして後続のリクエストを高速化できます。

このガイドでは、Webコンテンツキャッシングの基本的な概念のいくつかについて説明します。 これは主に、インターネット全体のキャッシュがコンテンツを正しく処理できるようにするためのキャッシュポリシーの選択方法について説明します。 キャッシングがもたらす利点、注意すべき副作用、およびパフォーマンスと柔軟性の最適な組み合わせを提供するために採用するさまざまな戦略について説明します。

キャッシングとは何ですか?

キャッシングは、後続のリクエストを高速化するために再利用可能な応答を保存するための用語です。 利用可能なキャッシュにはさまざまな種類があり、それぞれに独自の特性があります。 アプリケーションキャッシュとメモリキャッシュはどちらも、特定の応答を高速化する機能で人気があります。

このガイドの焦点であるWebキャッシングは、別のタイプのキャッシュです。 Webキャッシングは、システム全体の知覚応答性を向上させながら、ネットワークトラフィックを最小限に抑えることを目的としたHTTPプロトコルのコア設計機能です。 キャッシュは、元のサーバーからブラウザへのコンテンツの移動のすべてのレベルで見つかります。

Webキャッシングは、特定のルールに従ってリクエストのHTTP応答をキャッシュすることで機能します。 キャッシュされたコンテンツに対する後続の要求は、要求をWebサーバーに送り返す代わりに、ユーザーに近いキャッシュから実行できます。

利点

効果的なキャッシュは、コンテンツコンシューマーとコンテンツプロバイダーの両方を支援します。 キャッシングがコンテンツ配信にもたらす利点のいくつかは次のとおりです。

用語

キャッシングを扱う場合、なじみのない用語に出くわす可能性があります。 より一般的なもののいくつかを以下に示します。

他にもたくさんのキャッシュ用語がありますが、上記のものはあなたが始めるのに役立つはずです。

何をキャッシュできますか?

特定のコンテンツは、他のコンテンツよりもキャッシュに適しています。 ほとんどのサイトで非常にキャッシュに適したコンテンツは次のとおりです。

これらは頻繁に変更されない傾向があるため、長期間キャッシュすることでメリットが得られます。

キャッシングで注意しなければならないいくつかの項目は次のとおりです。

ほとんどキャッシュされるべきではないいくつかのアイテムは次のとおりです。

上記の一般的なルールに加えて、さまざまな種類のコンテンツを適切にキャッシュできるポリシーを指定することができます。 たとえば、認証されたユーザー全員がサイトの同じビューを表示する場合、そのビューをどこにでもキャッシュできる可能性があります。 認証されたユーザーに、しばらくの間有効になるサイトのユーザーセンシティブビューが表示された場合は、ユーザーのブラウザにキャッシュするように指示できますが、中間キャッシュにはビューを保存しないように指示できます。

Webコンテンツがキャッシュされる場所

コンテンツは、配信チェーン全体のさまざまなポイントでキャッシュできます。

これらの各場所は、独自のキャッシュポリシーとコンテンツのオリジンで設定されたポリシーに従って、アイテムをキャッシュできます。

ヘッダーのキャッシュ

キャッシングポリシーは、2つの異なる要因に依存しています。 キャッシングエンティティ自体が、受け入れ可能なコンテンツをキャッシュするかどうかを決定します。 キャッシュが許可されているよりも少なくキャッシュすることを決定できますが、それ以上になることはありません。

キャッシュ動作の大部分は、コンテンツ所有者によって設定されたキャッシュポリシーによって決定されます。 これらのポリシーは、主に特定のHTTPヘッダーを使用して明確に表現されています。

HTTPプロトコルのさまざまな反復を通じて、さまざまなレベルの洗練度を備えた、キャッシュに焦点を合わせたいくつかの異なるヘッダーが発生しました。 あなたがおそらくまだ注意を払う必要があるものは以下の通りです:

Varyヘッダーについての脇

The Vary ヘッダーは、キャッシュ内のエントリを希釈することを犠牲にして、同じコンテンツの異なるバージョンを保存する機能を提供します。

の場合 Accept-Encoding、設定 Vary ヘッダーを使用すると、圧縮されたコンテンツと圧縮されていないコンテンツを明確に区別できます。 これは、圧縮されたコンテンツを処理できないブラウザにこれらのアイテムを正しく提供するために必要であり、基本的なユーザビリティを提供するために必要です。 あなたにそれを伝える1つの特徴 Accept-Encoding の良い候補かもしれません Vary 可能な値は2つか3つしかないということです。

のようなアイテム User-Agent 一見すると、モバイルブラウザとデスクトップブラウザを区別して、サイトのさまざまなバージョンを提供するのに適しているように思われるかもしれません。 しかし、 User-Agent 文字列は非標準であるため、中間キャッシュに同じコンテンツの多くのバージョンがあり、キャッシュヒット率が非常に低くなる可能性があります。 The Vary 特に、制御する中間キャッシュでリクエストを正規化する機能がない場合は、ヘッダーを慎重に使用する必要があります(たとえば、コンテンツ配信ネットワークを利用している場合など)。

キャッシュ制御フラグがキャッシングに与える影響

上記で、どのように Cache-Control ヘッダーは、最新のキャッシュポリシー仕様に使用されます。 このヘッダーを使用して、複数の命令をコンマで区切って、さまざまなポリシー命令を設定できます。

いくつかの Cache-Control コンテンツのキャッシュポリシーを指示するために使用できるオプションは次のとおりです。

これらをさまざまな方法で組み合わせて、さまざまなキャッシュ動作を実現できます。 相互に排他的な値は次のとおりです。

The no-store オプションは no-cache 両方が存在する場合。 認証されていない要求への応答については、 public 暗示されます。 認証されたリクエストへの応答については、 private 暗示されます。 これらは、反対のオプションをに含めることでオーバーライドできます。 Cache-Control ヘッダ。

キャッシング戦略の開発

完璧な世界では、すべてが積極的にキャッシュされる可能性があり、コンテンツを検証するためにサーバーに接続されるのはたまにしかありません。 ただし、これは実際にはあまり発生しないため、長期的なキャッシュの実装と変化するサイトの要求への対応のバランスをとることを目的とした、適切なキャッシュポリシーを設定する必要があります。

一般的な問題

コンテンツの生成方法(ユーザーごとに動的に生成される)またはコンテンツの性質(機密性の高い銀行情報など)が原因で、キャッシュを実装できない、または実装すべきでない状況は数多くあります。 キャッシュを設定するときに多くの管理者が直面するもう1つの問題は、新しいバージョンが公開されていても、古いバージョンのコンテンツがまだ古くなっていない状態で公開されている状況です。

これらは両方とも頻繁に発生する問題であり、キャッシュのパフォーマンスと提供するコンテンツの精度に深刻な影響を与える可能性があります。 ただし、これらの問題を予測するキャッシュポリシーを開発することで、これらの問題を軽減できます。

一般的な推奨事項

状況によって使用するキャッシュ戦略が決まりますが、次の推奨事項は、いくつかの合理的な決定に向けてガイドするのに役立ちます。

使用する特定のヘッダーについて心配する前に、キャッシュヒット率を上げるために実行できる特定の手順があります。 いくつかのアイデアは次のとおりです。

さまざまなアイテムの正しいヘッダーを選択するという点で、以下は一般的なリファレンスとして役立ちます。

重要なのは、変更が行われたときに将来エントリを無効にする機会を残しながら、可能な場合は積極的なキャッシュを優先するバランスをとることです。 あなたのサイトはおそらく以下の組み合わせを持っているでしょう:

目標は、許容可能なレベルの精度を維持しながら、可能な場合はコンテンツを最初のカテゴリに移動することです。

結論

サイトに適切なキャッシュポリシーが設定されていることを確認するために時間をかけると、サイトに大きな影響を与える可能性があります。 キャッシングを使用すると、同じコンテンツを繰り返し提供することに関連する帯域幅コストを削減できます。 サーバーは、同じハードウェアでより多くのトラフィックを処理することもできます。 おそらく最も重要なことは、クライアントがサイトでより速く体験できるようになることです。これにより、クライアントはより頻繁に戻ってくる可能性があります。 効果的なWebキャッシングは特効薬ではありませんが、適切なキャッシングポリシーを設定すると、最小限の作業で測定可能な利益を得ることができます。

モバイルバージョンを終了