가능세계
[Network] 캐시 제어 헤더(Cache-Control Headers)란 무엇인가요? 본문
사용자가 동일한 웹 사이트를 다시 방문할 때, 캐시 제어는 필요한 리소스를 캐시에서 가져올 것인지, 아니면 리소스 요청을 다시 서버로 보내야 하는지를 결정하는 규칙을 설정합니다.
클라이언트 요청 및 서버 응답 헤더에는 캐시 제어를 위한 지시어(directives)라는 것이 있습니다.
Cache-Control
: 캐시 제어Pragma
: 캐시 제어(하위 호환)Expires
: 캐시 유효 기간 지정(하위 호환)
1. Cache-Control
Cache-Control
헤더는 요청과 응답 헤더로 사용하며, 이를 통해 리소스를 캐싱(데이터를 캐시에 저장하는 행위)하는 방법을 지시할 수 있습니다.
예를 들어, "클라이언트-중개 서버-원 서버"와 같은 구조인 경우, 중개 서버에 있는 캐시를 가져오지 않도록 하려면 요청 시부터 Cache-Control을 헤더로 넣어주곤 합니다.
캐싱을 위해 다음과 같은 지시어를 제공합니다.
- Cache-Control: max-age
캐시 유효 시간을 초 단위로 나타냅니다. 예를 들어cache-control: max-age=120
는 리소스가 120초 동안 유효하며, 그 이후에는 최신 리소스를 요청해야 함을 의미합니다. - Cache-Control: no-cache
리소스에 대한 캐시를 생성하지만, 캐시 사용 전에 항상 원 서버에 검증하고 사용하도록 요구합니다. - Cache-Control: no-store
데이터에 민감한 정보가 있으므로 리소스에 대한 캐시를 생성하지 않도록 지시합니다. 이는 private 캐시를 포함한 모든 유형의 캐시에 적용됩니다. 정보가 의도치 않게 저장된 경우, 가능한 한 빨리 삭제하려고 시도합니다. - Cache-Control: public
리소스가 모든 캐시에 저장될 수 있음을 의미합니다. 공유 캐시 또는 중개 서버인 프록시 캐시 서버에도 저장될 수 있습니다. - Cache-Control: private
클라이언트 웹 브라우저와 같은 특정한 사용자 환경에만 저장을 허용하는 것을 의미합니다. CDN이나 프록시 캐시 서버에서는 캐시 할 수 없습니다. 기본값이 private입니다. - Cache-Control: s-maxage
프록시 캐시 서버에 적용되는 max-age입니다. - Cache-Control: Age
원 서버의 응답이 프록시 캐시 서버에 머문 시간(sec)으로, 잘 사용되지 않습니다.
2. Pragma
Pragma: no-cache
HTTP Cache-Control HTTP/1.1
헤더가 없는 HTTP/1.0
하위 호환을 위해 사용하는 캐시 제어 헤더입니다.
Cache-Control: no-cache
와 동일한 역할을 수행하지만 권장하지 않습니다.
3. Expires
Expires: Wed, 01 Jun 2022 08:00:00 GMT
캐시 만료일을 정확한 날짜로 명시하며, 그 이후에는 만료된 것으로 간주합니다.
HTTP 1.0 하위 호환을 위해 사용되지만, 지금은 더 유연한 Cache-Control: max-age
를 권장합니다.
만일 max-age
와 함께 사용하면 Expires는 무시됩니다.
참고
'Blog > Network' 카테고리의 다른 글
[Network] 캐시 무효화(Cache Busting)란 무엇인가요? (0) | 2023.09.11 |
---|---|
[Network] 프록시 캐시(Proxy Cache)란 무엇인가요? (0) | 2023.09.11 |
[Network] 캐시와 조건부 요청(Cache & Conditional request) 정리하기 (0) | 2023.09.11 |
[Network] HTTP 헤더 살펴보기 - 쿠키(HTTP Cookies) (0) | 2023.09.11 |
[Network] HTTP 헤더 살펴보기 - 인증(Authentication) (0) | 2023.09.11 |