CachingHttpFilter
AlexR が提案したものと同様のものを使用することを検討しますが、HTTP ヘッダーを使用してキャッシングを制御することを検討します。
この記事If-Modified-Since
では、その後 URL が要求されたときに HTTP ヘッダーを比較する方法をうまく説明しています。HTTP 304
その後、応答を返すのはフィルター次第です。
日付の比較:
クライアントはサーバーに特定のページを要求します。クライアントが既にそのページを読んでいる場合は、キャッシュされたページの最終更新日を含む要求を (サーバーに) 送信します (例: 「If-Modified-Since: 21/07/2002」 13:47:24 GMT”);ヘッダー If-Unmodified-Since もあります。
サーバーは、クライアントから提供されたこの日付を、要求されたページの最終更新日と比較します。
サーバー上のページの日付が同じ場合、サーバーはクライアントに、キャッシュ内のバージョンのページを使用できることを通知します (「HTTP/1.1 304 Not Modified」)。クライアントとサーバー間の交換はそこで停止します。
サーバー上のページの方が新しい場合、サーバーはクライアントに変更を通知し (「Last-modified: 21/06/2012 08:45:37 pm GMT」)、このページをクライアントに送信します。ブラウザは、ページが最後に変更された日付を保存します。
また、ETag
HTTP ヘッダーも確認する必要があります。
残念ながら、キャッシングは単純に聞こえますが、多くの場合、正しく行うのは困難です。多くの場合、データベース クエリのチューニングは、アプリケーションのパフォーマンスを改善するための最適な出発点です。