0
我通過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/**
所示的方法。