honey_pot

CloudFlare - 캐시 컨트롤 본문

네트워크

CloudFlare - 캐시 컨트롤

_tera_ 2023. 6. 13. 15:42

https://www.cloudflare.com/learning/cdn/glossary/what-is-cache-control/


Cache-Control

  • 브라우저 캐싱 동작을 지시하는 HTTP 헤더
  • 사용자가 동일한 웹사이트를 다시 방문할 때 캐시 제어는 해당 리소스를 로컬 캐시에서 로드할지, 아니면 브라우저가 서버에 새로운 리소스를 요청해야 하는지 여부를 결정하는 규칙을 설정

HTTP header

  • HTTP(하이퍼텍스트 전송 프로토콜)
  • 클라이언트에서 서버로 보내는 요청과 서버에서 클라이언트로 보내는 응답으로 구성
  • HTTP 요청과 응답은 각각 헤더라고 하는 일련의 키-값 쌍

Request Header 구성 요소

  1. 요청 중인 리소스에 대한 정보
  2. 클라이언트가 사용 중인 브라우저
  3. 클라이언트가 허용하는 데이터 형식

Response header 구성 요소

  1. 요청이 성공적으로 처리되었는지 여부
  2. 응답 본문에 포함된 리소스의 언어 및 형식

Cache-Control header 캐시 제어 헤더

  • HTTP 요청과 응답 모두에 나타남
  • 콜론 왼쪽 키= '캐시 제어'
  • 콜론 오른쪽 = 값 (지시어 directives)

 

cache-control directives 캐시 제어 지시어 

  • 리소스를 캐시할 수 있는 사람과 리소스를 업데이트해야 하기 전에 캐시할 수 있는 기간을 지정

cache-control: private

  • 클라이언트만 캐시 가능
  • 사용자의 개인 정보를 표시하는 웹사이트와 같이 비공개 데이터가 포함된 리소스인 경우

cache-control: no-store

  • 어디에도 캐시 불가
  • 사용자가 이 데이터를 요청할 때마다 원본 서버에 새 복사본을 요청
  • 은행 계좌 정보와 같이 매우 민감한 데이터가 포함된 리소스에 사용

cache-control: no-cache

  • 요청된 리소스의 캐시된 버전을 업데이트된 버전이 있는지 먼저 확인하지 않고는 사용할 수 없음
  • ETag : 리소스가 요청된 시점의 리소스 버전에 고유한 토큰을 포함하는 또 다른 HTTP 헤더 👉 업데이트될 때마다 원본 서버에서 변경
  • 클라이언트는 항상 원본 서버에 연결하여 캐시된 리소스의 ETag를 서버의 ETag와 비교
  • ETag가 동일하면 캐시된 리소스가 사용자에게 제공
  • 동일하지 않은 경우 리소스가 업데이트되었음을 의미 👉 클라이언트는 사용자에게 제공할 새 버전을 다운로드
  • 사용자는 항상 해당 리소스의 최신 버전을 사용

cache-control: max-age

  • 다운로드한 후 캐시에서 제공할 수 있는 시간, 즉 리소스를 몇 초 동안 사용할 수 있는지를 지정
  • 예를 들어 최대 수명을 1800으로 설정하면 리소스가 서버에서 처음 요청된 후 1,800초(30분) 동안 사용자는 이후 요청 시 해당 리소스의 캐시된 버전을 제공받고, 30분이 지난 후 사용자가 리소스를 다시 요청하면 클라이언트는 원본 서버에 새 복사본을 요청

cache-control: s-maxage

  • 개별 클라이언트에 대한 'max-age' 지시어를 재정의(override)
  • CDN과 같은 공유 캐시를 위한 것으로, 공유 캐시가 캐시에서 리소스를 계속 제공할 수 있는 기간을 지정

'네트워크' 카테고리의 다른 글

CloudFlare - 역방향 프록시  (0) 2023.06.14
CloudFlare - 엣지 서버  (0) 2023.06.14
CloudFlare - 정적 캐싱 vs 동적 캐싱  (0) 2023.06.13
CloudFlare - 캐싱  (0) 2023.06.13
CloudFlare - CDN의 지표 3. 캐시 적중률  (0) 2023.06.13
Comments