CDN 캐싱에서 Cache-Control의 max-age와 s-maxage는 어떻게 다른가요?
답변 포인트
브라우저 캐시와 shared cache(CDN, 프록시)에 서로 다른 TTL을 줄 수 있습니다.
정답 및 해설
빠른 요약
`Cache-Control`은 HTTP 응답을 얼마나, 어디에 캐시할지 알려주는 헤더입니다. `max-age`는 일반적으로 브라우저를 포함한 모든 캐시가 응답을 fresh하게 볼 수 있는 시간을 의미합니다.
Cache-Control은 HTTP 응답을 얼마나, 어디에 캐시할지 알려주는 헤더입니다. max-age는 일반적으로 브라우저를 포함한 모든 캐시가 응답을 fresh하게 볼 수 있는 시간을 의미합니다.
s-maxage는 shared cache 전용 지시어입니다. CDN이나 프록시처럼 여러 사용자가 공유하는 캐시에 적용되며, 브라우저의 max-age보다 우선합니다.
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을 주는 도구입니다.