inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

spring과 http캐시

698

서민우

작성한 질문수 2

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를 둘 다 설정해야만 할까요?

네트워크 cachecontrol

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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