http에서 Cache-Control 설명
Cache-Control 설명
Cache-Control은 HTTP/1.1에서 도입된 표준 헤더로, 브라우저, 프록시 서버 등 다양한 캐시 주체가 리소스를 어떻게 저장하고 재사용할지 제어하는 역할을 합니다. 이 헤더는 요청(request)과 응답(response) 모두에서 사용되며, 웹 리소스의 캐싱 정책을 세밀하게 지정할 수 있습니다123.
주요 Cache-Control 지시어
- max-age=초
리소스가 캐시에 저장될 수 있는 최대 시간을 초 단위로 지정합니다. 예를 들어,
Cache-Control: max-age=120
은 120초 동안 캐시가 유효함을 의미합니다145. - no-cache 캐시에 저장은 가능하지만, 실제로 사용하기 전에 반드시 원 서버에 유효성 검사를 해야 합니다. 즉, 매번 서버에 변경 여부를 확인합니다162.
- no-store 어떤 캐시에도 저장하지 않음을 의미합니다. 민감한 정보나 보안이 중요한 데이터에 주로 사용됩니다162.
- public 모든 캐시(브라우저, 프록시 등)에 저장할 수 있음을 나타냅니다. 인증이 필요한 응답도 캐시할 수 있게 허용합니다12.
- private 오직 개인 사용자(브라우저) 캐시에만 저장할 수 있고, 프록시와 같은 공유 캐시에는 저장하지 않습니다. 기본값이 private인 경우가 많습니다12.
- s-maxage=초 프록시(공유 캐시)에만 적용되는 max-age 값입니다. 개인 캐시에는 영향을 주지 않습니다1.
동작 예시
Cache-Control: max-age=600, public
→ 600초(10분) 동안 모든 캐시에 저장 가능.Cache-Control: no-store
→ 민감한 정보로, 어떤 캐시에도 저장하지 않음.Cache-Control: private, max-age=60
→ 60초 동안 브라우저 캐시에만 저장, 프록시 등 공유 캐시에는 저장하지 않음.
기타 관련 헤더
- Pragma: no-cache HTTP/1.0 하위 호환을 위해 사용되며, 현재는 Cache-Control을 권장합니다17.
- Expires 캐시 만료 시점을 날짜로 지정하는 방식이나, Cache-Control의 max-age가 더 유연하고 우선 적용됩니다1.
요약
Cache-Control 헤더는 HTTP에서 리소스의 캐싱 정책을 세밀하게 제어하는 핵심 도구입니다. 이를 통해 웹 서비스의 성능, 보안, 데이터 일관성을 효율적으로 관리할 수 있습니다123.
-
https://co-natus.tistory.com/entry/Cache-Control-Headers ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Caching ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
-
https://www.cdnetworks.com/ko/blog/other/what_is_cache_control/ ↩︎ ↩︎
-
https://inpa.tistory.com/entry/HTTP-🌐-웹-브라우저의-캐시-전략-Cache-Headers-다루기 ↩︎