작성
·
612
0
강의에서 캐시의 조건을 설정할 때
no cache, no store, must-revalidate 셋을 모두 설정해야한다고 하셨습니다.
그래서 제가 스프링(spring boot말고 그냥 spring입니다)에서 WebContentInterceptor에
CacheControl 클래스로 조건을 설정하려고 했습니다.
@Bean
public MappedInterceptor webContentInterceptor() {
String[] includePatterns = {"/board/game/**"};
WebContentInterceptor wci = new WebContentInterceptor();
CacheControl cacheControl = CacheControl.noCache();
wci.addCacheMapping(cacheControl, "/**");
return new MappedInterceptor(includePatterns, wci);
}
그런데 CacheControl에서는 no cache와 no store를 동시에 설정을 할 수 없었습니다.
https://github.com/spring-projects/spring-framework/issues/18354
위 링크에서 글을 보면 no store가 이전 브라우저에서 동작하지 않는 것을 확인하지 못했다고 말을 하고 있는 것 같습니다. 그래서 no cache와 no store 둘을 같이 사용할 일이 없다고 하는 것 같아서요.
아니면 제가 직접 response를 건드려서 no cache와 no store를 둘 다 설정해야만 할까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
Spring에서 HTTP 캐시 관련 조건을 설정할 때, no cache, no store, must-revalidate을 모두 설정해야 한다는 내용은 맞습니다.
Cache-Control 헤더를 이용하여 캐시 조건을 설정할 수 있습니다. 하지만, no-cache와 no-store를 동시에 설정하는 것은 확실히 지원하지 않는 것으로 알려져 있습니다.
더 많은 캐시 제어 옵션을 사용하고 싶다면, 직접 response를 조작하는 방법을 고려할 수 있습니다. 예를 들어, HttpServletResponse 객체를 이용하여 setHeader() 메소드를 사용하여 Cache-Control 헤더를 직접 설정할 수 있습니다. 이 방법을 사용하면 no-cache와 no-store를 둘 다 설정하는 것이 가능합니다.
하지만, 이러한 설정은 주의해야 할 점들이 있습니다. 브라우저가 캐시를 어떻게 처리하는지, 캐시 동작 환경에 따라 다를 수 있기 때문에 특정 브라우저나 환경에서 예기치 않은 동작을 할 수 있습니다. 따라서, 신중하게 캐시 설정을 검토하고 테스트하는 것이 좋습니다.
더 자세한 내용은 Spring Framework GitHub 이슈 페이지의 해당 링크를 참고하시면 도움이 될 것입니다. 하지만, 프로그래밍에 관련된 질문이라면 제가 도움을 드릴 수 있으니, 추가로 궁금한 사항이 있으시면 언제든지 물어보세요. 감사합니다.