Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

탐구개발

Cache-Control 헤더값 본문

HTTP

Cache-Control 헤더값

탐구개발자 2023. 11. 8. 14:10

Cache-Control 헤더는  서버 또는 클라이언트가  리소스의 캐싱 동작을 제어하기 위해 사용되는 HTTP 헤더입니다.  헤더는  브라우저와  서버 사이의 통신에서 캐싱 동작을 조정하여  페이지의 성능과 성능 개선을 위해 사용됩니다.

 

사용되는 지시자로 public, no-store, max-age, must-revalidate가 있습니다.

이 지시자들을 분류해서 정리해보았습니다.

 

 

Cache-Control 예시

Cache-Control: no-cache, must-revalidate

Cache-Control: no-store

Cache-Control: public, max-age=3600

 

 

응답헤더값

공유 캐시 / 개인 캐시 여부

  • public : 같은 컴퓨터를 사용하는 복수의 사용자간 캐시 재사용을 허가한다.
  • private : 같은 컴퓨터를 사용하는 다른 사용자 간 캐시를 재사용하지 않는다.

 

캐시 저장 여부

  • no-store : 캐시하지 않는다.

 

캐시 저장하지만 신선도 확인

  • no-cache : 캐시가 유효한지 매번 문의해라. max-age=0과 같다.
  • max-age : 캐시 신선도 초단위 설정. 유효하면 서버에 문의하지 않고 캐시 리턴, 유효하지 않으면 서버에 문의하고 304 Not Modified가 반환됐을 때만 캐시 리턴. 데이터가 업데이트 되었다면 서버로부터 받은 새 데이터 리턴.
  • s-maxage : max-age와 같지만 공유캐시에 대한 설정값

 

프록시 관련

  • no-transform : 프록시가 컨텐츠를 변형하지 않도록 프록시에 요청한다.
  • must-revalidate : no-cache와 비슷하지만 프록시 서버에 보내는 지시가 된다. 프록시 서버가 서버에 문의했을 때 서버의 응답이 없으면, 프록시 서버가 클라이언트에 504 gateway timeout이 반환되기를 기대한다. 
  • proxy-revalidate : must-revalidate와 같지만, 공유캐시에 대한 설정값

 

 

요청헤더값

캐시 삭제

  • no-store : 프록시 서버에 캐시를 삭제해라

 

신선도 확인

  • no-cache : 응답과 동일
  • max-age : 응답과 동일

 

신선도와 별개로 캐시 데이터를 사용

  • max-stale : max-age값이 지났어도 클라이언트는 지정한 시간 동안은 저장된 캐시를 재사용하라고 프록시에 요청한다. 연장 시간은 생략할 수 있고, 그런 경우 영원히 유효하다는 의미가 된다. 만료된 캐시데이터라도 보내달라는 의미...
  • min-fresh : 캐시의 수명이 지정된 시간 이상 남아있을 때, 캐시를 보내도 좋다고 프록시에 요청한다. 즉 적어도 지정된 시간만큼은 신선해야 한다.
  • only-if-cached : 캐시된 경우에만 응답을 반환하고, 캐시된 콘텐츠가 없을 땐 504 Gateway Timeout 오류 메시지를 반환하도록 프록시에 요청한다. 이 헤더가 설정되면 처음을 제외하고 오리진 서버에 전혀 액세스하지 않는다.
  • (이 값들은 왜 쓰는걸까요...?)
  •  max-stale과 only-if-cached의 차이는 캐시가 없을 경우의 동작 차이

 

프록시 관련

  • no-transform : 프록시가 컨텐츠를 변형하지 않도록 프록시에 요청한다.

 

 

 

기타 Cache-Control 관련 헤더

Last-modified

  • 특정날짜로 지정
  • Etag (리소스 변경 여부를 ID로 관리하며, 강한 Etag와 약한 Etag로 분류된다)가 같이 있을 경우, Etag가 우선순위가 높다
Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

ETag: "686897696a7c876b7e"

Expired

  • 특정날짜로 지정
  • Cache-control : max-age는 초단위로 지정되며, Cache-control : max-age가 우선순위가 높다
Expires: Wed, 21 Oct 2015 07:28:00 GMT

Pragma : no-cache

  • HTTP 1.1이전에 사용하던 헤더로 HTTP 1.1에서는 Cache-Control 헤더로 대체
  • 클라이언트에서 프록시 서버에 캐시요청방식에 대해 지시하는 헤더
  • '요청한 콘텐츠가 이미 저장돼 있어도, 원래 서버에서 가져오라'
  • 클라이언트가 정보의 수명과 품질을 일일이 관리하는 상태는 부자연스럽기 때문에 사용하지 않음

 

'HTTP' 카테고리의 다른 글

Content-Security-Policy 헤더값  (1) 2023.11.08
CORS (교차 출처 리소스 공유)  (0) 2023.11.08
HTTPS(TLS) 통신 과정  (1) 2023.11.08
Referer 헤더값  (0) 2023.11.08
상태코드 301, 302, 303, 307, 308의 차이점  (0) 2023.11.08