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

minho oh님의 프로필 이미지
minho oh

작성한 질문수

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

캐시 무효화

no-store 로도 충분할 것 같은데 no-cache, must-revalidate 는 왜 같이 추가하는 것인가요?

작성

·

7K

28

하위 호환을 위해서 Pragma : no-cache 헤더를 추가하는 것은 이해가 되는데. no-cache, must-revalidate  는 왜 추가하는 것인지 이해가 되지 않습니다.

데이터가 이미 캐시가 되어 있는 경우 또는 새로운 데이터를 응답하는 경우 모두 캐시를 무효화 시키고 싶다면 서버에서 no-store 로도 응답하면 되는 것아닌가요?

답변 2

34

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. minho oh님 좋은 질문입니다.

no-store만으로 캐시가 무효화 되어야 하는 것이 맞습니다.

그런데 HTTP 스펙이라는 것이 모든 상황을 완벽하게 정의했으면 좋겠지만, 디테일하게 들어가면 모호한 부분들이 존재합니다.

예를 들어서 웹 브라우저에서 앞으로가기, 뒤로가기를 했을 때도 이것을 캐시로 볼 것인가? 이때는 no-store만 보고 판단할 것인가? no-cache를 보고 판단할 것인가?

HTTP 1.1을 지원하지만 조금 오래된 브라우저와의 호환, 그리고 버그

수 많은 프록시 캐시 업체들과 그 구현 서버 등등...

이런 문제들 때문에 no-store만으로 해결하지는 못하고, 나머지 옵션들도 함께 사용하게 됩니다. 그래서 구글이나 네이버 등 주요 메이저 사이트의 응답을 보면 cache-control: no-cache, no-store, must-revalidate를 함께 가져갑니다.

관련해서 더 자세한 내용은 다음 링크를 참고하시면 도움이 되실거에요^^

https://stackoverflow.com/questions/49547/how-do-we-control-web-page-caching-across-all-browsers

감사합니다.

2

minho oh님의 프로필 이미지
minho oh
질문자

답변해주셔서 감사합니다!!

minho oh님의 프로필 이미지
minho oh

작성한 질문수

질문하기