나는 파일 시스템에서 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/**
을 처리 위에 표시 방법 그들을 돼요.