私はファイルシステムからSpring @Controller
経由でファイルを提供していますが、ブラウザキャッシュを最大限に活用したいと考えています。ここで変更するまでファイルを永久にキャッシュするためのHTTPヘッダー
はリクエストを処理する方法である:
@ResponseBody
@GetMapping(value = "/file/{f:.*}")
public FileSystemResource getFile(@PathVariable("f") String fileName, HttpServletResponse response) {
File file = new File("/folder/" + fileName);
response.setHeader("Cache-Control", CacheControl.maxAge(7, TimeUnit.DAYS).cachePrivate().getHeaderValue());
response.setDateHeader("Last-Modified", file.lastModified());
response.setHeader("ETag", "" + file.lastModified());
return new FileSystemResource(file);
}
ブラウザはそれらが最後の要求以降のファイルシステムに変更された場合を除いて、永遠にファイルをキャッシュする必要があります。
設定方法がわかりませんCache-Control
とExpires
です。
どのように設定するのですか、どのヘッダーを追加して目的の動作を得る必要がありますか?私も、デフォルトでは次のヘッダーが追加されSpring Security
を使用
注:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Expires:0
Pragma:no-cache
これらのヘッダは、「通常」ページの罰金ですが、私は/file/**
を取り扱う上で示した方法のためにそれらをしたいいけません。