인프런 커뮤니티 질문&답변

서민우님의 프로필 이미지
서민우

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

spring과 http캐시

작성

·

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 이슈 페이지의 해당 링크를 참고하시면 도움이 될 것입니다. 하지만, 프로그래밍에 관련된 질문이라면 제가 도움을 드릴 수 있으니, 추가로 궁금한 사항이 있으시면 언제든지 물어보세요. 감사합니다.

서민우님의 프로필 이미지
서민우

작성한 질문수

질문하기