전체 목록
인프라Medium#441

CDN 캐싱에서 Cache-Control의 max-age와 s-maxage는 어떻게 다른가요?

#인프라#CDN#Cache-Control#HTTP

답변 포인트

브라우저 캐시와 shared cache(CDN, 프록시)에 서로 다른 TTL을 줄 수 있습니다.

정답 및 해설

빠른 요약

`Cache-Control`은 HTTP 응답을 얼마나, 어디에 캐시할지 알려주는 헤더입니다. `max-age`는 일반적으로 브라우저를 포함한 모든 캐시가 응답을 fresh하게 볼 수 있는 시간을 의미합니다.

Cache-Control은 HTTP 응답을 얼마나, 어디에 캐시할지 알려주는 헤더입니다. max-age는 일반적으로 브라우저를 포함한 모든 캐시가 응답을 fresh하게 볼 수 있는 시간을 의미합니다.

s-maxage는 shared cache 전용 지시어입니다. CDN이나 프록시처럼 여러 사용자가 공유하는 캐시에 적용되며, 브라우저의 max-age보다 우선합니다.

HTTP
Cache-Control: public, max-age=60, s-maxage=3600

위 응답은 브라우저에서는 60초 동안 fresh하지만, CDN에서는 3600초 동안 fresh하게 사용할 수 있습니다. 사용자는 자주 재검증하게 하면서도 origin 서버 부하는 CDN이 줄여주는 구성이 가능합니다.

개인화 응답에는 주의해야 합니다. 사용자별 정보가 들어간 응답에 public이나 긴 s-maxage를 잘못 주면 다른 사용자에게 캐시된 데이터가 노출될 수 있습니다. 인증이 필요한 응답은 보통 private, no-store, 또는 사용자별 cache key를 엄격히 설정해야 합니다.

정리하면 max-age는 클라이언트 포함 일반 TTL, s-maxage는 CDN 같은 공유 캐시에 별도 TTL을 주는 도구입니다.

관련 질문

같은 카테고리/태그 기준