spring과 http캐시
698
작성한 질문수 2
강의에서 캐시의 조건을 설정할 때
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 이슈 페이지의 해당 링크를 참고하시면 도움이 될 것입니다. 하지만, 프로그래밍에 관련된 질문이라면 제가 도움을 드릴 수 있으니, 추가로 궁금한 사항이 있으시면 언제든지 물어보세요. 감사합니다.
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
71
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
69
1
쿠키에 대해 질문드려요!
0
89
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
87
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
49
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
54
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
81
1
리소스 질문드립니다
0
56
1
IP 패킷 질문입니다.
0
59
1
html from, http api
0
75
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
99
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
141
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
145
1
다음 강의 커리큘럼 질문!!
0
131
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
91
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
140
1
PATCH를 사용하지 못할 때 왜 POST?
0
162
2
협상과 우선순위3 질문드립니다.
1
130
1





