2011-11-14 3 views
0

サーブレットは、すぐにすべてが正常に動作しますが、キャッシングというのいずれかの方法があるHTML imgをキャッシュすることができます。ソースはその場で生成しているJavaサーブレットを指していますか?私のプロジェクトで

response.getOutputStream().write(imageBytes); 

のようなものをbytesteamを応答しながら、私たちはその

<img src="url to java servlet?parameters"> 

のようないくつかのimgタグを使用しますそれは通常のURL画像のように自動的にキャッシュされないため、ブラウザ内の画像です。

+0

HTTP応答のコンテンツタイプとは何ですか? –

答えて

0

応答に少なくともETag,Last-ModifiedExpiresというヘッダーを設定する必要があります。 ETagヘッダーは、filename、filesize、およびlastmodifiedのタイムスタンプの組み合わせに基づいて、ファイルの一意の識別子を表す必要があります。 Last-Modifiedヘッダーは、ファイルの最後に変更されたタイムスタンプを表す必要があります。 Expiresヘッダーは、ファイルをキャッシュに保持する期間をクライアントに通知する必要があります。

キャッシュがクライアント側で期限切れで、ETagまたはLast-Modifiedが利用可能な場合、クライアントはHEAD要求を送信して、ファイルを更新する必要があるかどうかを確認します。そうでなければ、Expiresはそれに応じて再び延期されます。

このすべてを処理するサーブレットの例(ここでは、再開と自動GZIPをダウンロード):FileServlet supporting resume and GZIPがあります。

ただし、ファイルがディスクファイルシステム上で(データベースにはなく)すでに使用可能である場合は、そのジョブをservletcontainerの組み込みデフォルトサーブレットに委任することを検討する必要があります。 Reliable data servingも参照してください。

1

サーブレットは、if-modified-sinceexpiredロジックのロジックを提供する必要があります。方法はgetLastModifiedを参照してください。

関連する問題