Guruネットワーク経由で情報を取得するには時間もコストもかかります。レスポンスが大きいと、クライアントとサーバー間のラウンドトリップを何度も繰り返す必要があるため、レスポンスが利用可能となってブラウザで処理できるようになるまで時間がかかります。ユーザー側ではデータの通信コストが発生します。そのため、前に取得したリソースをキャッシュに保存して再使用できることは、パフォーマンスを最適化するうえで非常に重要です。キャッシュが実装されています。ディレクティブがあり、ブラウザがレスポンスをキャッシュに格納できるタイミングとその期間をブラウザに指示していることを確認するだけで済みます。サイズ値の設定、キャッシュの永続化を確実に行う必要があります。設定についてはプラットフォームのドキュメントを参照してください。ヘッダーも送っています。秒間キャッシュに格納するよう指示して、検証トークン("x234dff")を提供します。この検証トークンは、レスポンスの有効期限が切れた後で、リソースに変更があったかどうかを確認するために使用できます。ヘッダーを介して検証トークンが渡される。検証トークンを使うことで効率的なリソース更新チェックが可能となる。リソースに変更がなければデータ転送は発生しない。秒が経過し、ブラウザが同じリソースに対する新しいリクエストを開始したとしましょう。キャッシュを調べて前回のレスポンスを見つけます。残念ながら、レスポンスは有効期限切れのため使用できません。この処理は非効率的です。リソースに変更がなければ、キャッシュ内のデータとまったく同じものをダウンロードする必要はありません。ヘッダーに指定することで解決できます。サーバーは任意のトークンを生成して返します。通常、このトークンはファイルのコンテンツのハッシュやその他のフィンガープリントです。クライアントはフィンガープリントがどう生成されるかを認識する必要はありません。必要なのは次回のリクエストでそのフィンガープリントをサーバーに送信することだけです。フィンガープリントが変わらなければリソースに変更はないので、ダウンロードを省略できます。サーバーはそのトークンを現在のリソースと突き合わせて確認します。秒後に更新を延期できることをブラウザに通知します。レスポンスを再度ダウンロードする必要がないため、時間と帯域幅を節約できます。デベロッパーとして、この高効率な再検証を利用するにはどうしたらよいでしょうか。実はブラウザがすべての作業を実行してくれます。ブラウザは検証トークンが前に指定されたかどうかを自動的に検出し、発信リクエストにこのトークンを付加し、サーバーから受信したレスポンスに基づいて必要に応じてキャッシュのタイムスタンプを更新します。トークンを提供していることを確認するだけです。必要な構成フラグについては、サーバーの資料をご確認ください。プロジェクトには、人気の高いすべてのサーバー向けのサンプル構成ファイルが用意されており、構成フラグと設定ごとに詳細なコメントが記載されています。リストでご希望のサーバーを見つけ、該当する設定を探してコピーするか、推奨される設定でサーバーが設定されていることを確認してください。ポリシーを規定可能です。ディレクティブで、レスポンスのキャッシュを許可するユーザー、キャッシュを実施する条件、キャッシュに保存する期間を制御します。パフォーマンスの最適化の観点で、最良のリクエストとは、サーバーへの通信を必要としないリクエストです。レスポンスのローカルコピーがあれば、ネットワークによる待ち時間を完全に排除でき、データ転送のためにデータを読み込む必要もありません。ディレクティブをサーバーで返すことができます。)よりも優先されます。対応しているので、必要なのは指定することだけです。対する後続のリクエストへのレスポンスとして、以前返されたレスポンスを使用するには、まずサーバーに問い合わせてレスポンスに変更があったかどうかを確認する必要があることを示します。指定してもキャッシュされたレスポンスを検証するためのラウンドトリップは発生しますが、レスポンスに変更がなければダウンロードを省略できます。「no-store」はもっと単純です。返されたレスポンスのバージョンにかかわらず、ブラウザのキャッシュやすべての中間キャッシュはそのレスポンスを一切格納できません。個人の機密データや銀行データが含まれているレスポンスなどです。ユーザーがこのアセットをリクエストするたびに、リクエストがサーバーに送信され、完全なレスポンスが毎回ダウンロードされます。コードが通常キャッシュ可能になっていない場合でも、レスポンスをキャッシュに保存できます。通常は、明示的なキャッシュ情報(「max-age」など)によってレスポンスがキャッシュ可能であることが指定されているため「public」は必要ありません。人のため、中間キャッシュに格納することは認められません。「max-age」このディレクティブでは、取得したレスポンスを再使用できる最大時間を、リクエストの時刻を起点とする秒数で指定します。秒間キャッシュに格納して再使用できることを示します。ポリシーを判別します。理想的には、できるだけ多くのレスポンスを、できるだけ長い期間、クライアント上でキャッシュに保存し、レスポンスごとに検証トークンを提供して、効率的な再検証を実現することを目指しましょう。レスポンスはキャッシュに保存することが許可されず、リクエストごとに完全に取得する必要がある。ランクによる)の集計では、ダウンロードした全レスポンスの半数近くをブラウザのキャッシュに保存できます。ページビューやアクセスを繰り返す場合、このことは大幅な削減につながります。ある、という意味ではありません。以上をキャッシュに格納できるサイトもあれば、キャッシュに一切格納できない個人的なデータや時間依存のデータが多いサイトもあります。ヘッダーを返していることを確認してください。キャッシュされたレスポンスはリソースの「有効期限」まで使用されます。埋め込むことで、新しいバージョンのレスポンスに更新するようクライアントに強制することが可能です。パフォーマンスを最適化するには各アプリケーションで独自のキャッシュ階層を規定することが必要です。リクエストは、まずブラウザのキャッシュにルーティングされ、リクエストを満たす有効なキャッシュ済みレスポンスがあるかどうかが確認されます。一致するレスポンスがあると、そのレスポンスがキャッシュから読み取られるため、転送によるネットワーク遅延も、データの通信コストも発生しません。キャッシュ済みレスポンスを更新または無効化する場合はどうでしょうか。時間(max-age=86400)キャッシュに保存するよう指定してあったときに、デザイナーがすべてのユーザーに提供する必要のある更新をコミットしたとしましょう。コピーであるかをユーザーに伝え、ユーザーにキャッシュを更新してもらうにはどうするのでしょうか。変更する必要があります。指定されたとおりに有効期限が切れるまで、または他の何らかの理由でキャッシュから削除される(たとえば、ユーザーがブラウザのキャッシュを消去する)まで使用されます。この結果、ページが作成された時点での異なるバージョンのファイルをそれぞれのユーザーが使用している状態が発生することがあります。リソースを取得したばかりのユーザーは新しいバージョンを使用することになる一方で、以前の(ただしまだ有効な)コピーをキャッシュに保存してあるユーザーは古いバージョンのレスポンスを使用することになります。クライアント側のキャッシュと迅速な更新の両方の長所を活かすにはどうすればよいでしょうか。変更して、コンテンツが変わるたびにユーザーが新しいレスポンスをダウンロードしなければならないようにすればよいのです。ポリシー機能によって「キャッシュ階層」を定義でき、各リソースをキャッシュに保存する期間だけでなく、訪問者に新しいバージョンが表示されるまでの期間も制御できます。上記の例を分析してみましょう。「no-cache」とマークされています。このため、ブラウザはリクエストごとに常にドキュメントを再検証し、コンテンツに変更があれば最新のバージョンを取得します。フィンガープリントも埋め込んであります。レスポンスの新しいコピーがダウンロードされることになります。年で期限切れになるように設定されています。年という「ずっと先の有効期限」を使用しても問題ないのは、ファイルのフィンガープリントをファイル名に埋め込んであるためです。とマークされています。データが含まれているためです。日に設定されています。組み合わせることで、長い有効期限、レスポンスのキャッシュを保存できる場所の制御、オンデマンド更新のすべての長所を活かすことができます。トラフィックのパターン、提供するデータの種類、データ鮮度に関するアプリケーション固有の要件に応じて、リソースごとの適切な設定を規定および設定する必要があり、全体的な「キャッシュ階層」も構成する必要があります。次に、キャッシュ戦略に取り組むうえで押さえておきたい、おすすめの方法やテクニックを紹介します。提供すると、そのコンテンツは何度も取得および格納されます。大文字と小文字が区別されます。サーバーでリソースに変更がない場合、検証トークンがあれば同じデータを転送する必要がなくなります。中間でのキャッシュ候補です。リソースによって更新要件は異なります。指定することで、クライアントが更新データを取得する間隔を制御できます。リソースによって更新頻度は異なります。スタイルなど、リソースの特定の部分が頻繁に更新される場合は、そのコードを別のファイルとして提供することを検討してください。コードなど)はキャッシュから取得されて、更新を取得する際にダウンロードするコンテンツの量を最小限に抑えることができます。