0

jsp ファイル pageshow.jsp とパラメータ ID があります。

url パラメータに基づいてサーバー側で jsp ファイルをキャッシュする方法はありますか

ページ pageshow.jsp?id=100 をサーバーから構築する代わりにキャッシュから取得するように要求してい
ます ページ pageshow.jsp?id=200 をサーバーから構築する代わりにキャッシュから取得します

パラメータが異なるため、上記の 2 つのページには異なるキャッシュ コンテンツが必要です。

これにより、サーバー側でのjspファイルの再構築が回避され、サーバーの負荷も軽減される場合があります

4

2 に答える 2

2

CachingHttpFilterAlexR が提案したものと同様のものを使用することを検討しますが、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」)、このページをクライアントに送信します。ブラウザは、ページが最後に変更された日付を保存します。

また、ETagHTTP ヘッダーも確認する必要があります。

残念ながら、キャッシングは単純に聞こえますが、多くの場合、正しく行うのは困難です。多くの場合、データベース クエリのチューニングは、アプリケーションのパフォーマンスを改善するための最適な出発点です。

于 2012-08-29T09:37:22.270 に答える
2

CachingHttpFilterこの JSP ページのみにマップされ、次のことを行うものを作成できます。

  • キャッシュされたコンテンツが存在するかどうかを確認します
  • 存在する場合はそれを返します
  • chain.doFilter(request, response);要求された JSP に移動する呼び出しが存在しない場合。ただし、JSP から返されたすべてのバイトを格納してキャッシュする特別な応答 (応答ラッパー) を渡します。
于 2012-08-29T07:33:46.557 に答える