Web ページ上の画像は、サーバー アクションを呼び出すことによってデータ ストリームの形式でページに書き込まれます。
ページに入るたびに画像が再度ダウンロードされます
方法はありますか?画像を直接キャッシュするには
ディスカッションへの返信 (解決策)
を追加しました
画像はアクションリクエストです
バイナリストリーム まだキャッシュできますか?それは聞いたことがない。ページレベルのキャッシュは、特定のリソース (xx. 拡張子) 用です。
このキャッシュはサーバー側で実装され、サーバーが画像を書き出すと、応答によって Last-Modified パラメーターの値が増加します。キャッシュでは、ページが URL を再度リクエストすると、リクエスト パラメーターは if-modified-since パラメーター情報を運び、パラメーター情報を決定してブラウザーに戻り、キャッシュされたデータの使用を通知します
//キャッシュされたファイルの最終変更時刻を取得します (リクエスト時にこのパラメーターを持つのはキャッシュされたファイルのみです)
String lastUpdateTime = ServletActionContext.getRequest().getHeader("if-modified-since");
//パラメーターが存在する場合, キャッシュされたデータを使用するようにブラウザーに指示します
if(lastUpdateTime!=null){
//有効期限を決定する必要がある場合は、ファイルの最終変更時刻と現在の時刻を比較して決定します
//status:304,キャッシュされたデータを使用します
ServletActionContext.getResponse().setStatus(HttpServletResponse.SC_NOT_MODIFIED);
return null;
HttpServletResponse response=ServletActionContext.getResponse();
is = new BufferedInputStream(new FileInputStream(file)) 4) ;
response.setContentType("application/x-download"); //返されるファイルの種類を設定します
response.addHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(uploadFile.getSaveFileName()) "UTF-8 "));
//デザイン キャッシュはプライベート キャッシュであり、ユーザー間で共有されません
response.setHeader("Cache-Control", "private");
//重要! 、ブラウザーは、応答内でこのフィールドを見つけた場合にのみデータをキャッシュに保存します (最終更新時刻をマークします)
response.setDateHeader("Last-Modified",new Date().getTime());