본문 바로가기
개발/Network

캐시

by BellOne4222 2024. 1. 31.

네트워크에서의 캐시란?

  • HTTP는 상태를 유지하지 않는다.
  • 그렇다면 자원을 요청할 때 마다 자원은 새롭게 응답될까?
  • 서버의 지연을 줄이기 위해 웹 페이지, 이미지 등의 자원 사본을 임시 저장하는 웹 기술
  • 캐시된 자원이 저장되는 공간 : 클라이언트(브라우저) 혹은 특별한 서버(캐시 서버, 프록시 서버)

cache-controll 헤더

  • cache-controll 헤더로 캐시 기능을 알린다
  • cache-controll : max-age = 숫자(초) → 캐시한 자원의 지속 시간
  • cache-controll : no-cache → 캐시 가능한 자원이나, 항상 origin(본) 서버에 검증하기
  • cache-control: no-store → 캐시 하면 안될 자원

지속 시간 : 지속시간보다 넘어가면 다시 요청해야한다, 유효기간

캐시된 자원에는 유효 기간이 있다.

  • 해당 자원이 언제 마지막으로 변경되었는지를 알리는 Last-Modified 헤더

캐시된 자원의 변경

  • 캐시란 서버의 지연을 줄이기 위해 웹 페이지, 이미지 등의 자원 사본을 임시 저장하는 웹 기술
  • 캐시된 자원이 변경되었다면?

캐시된 자원의 변경 -1

  • 클라이언트는 요청시 if-modified-since 헤더로 특정 시점 이후 자원 변경 여부를 묻는다.
  • 만일 변경되었다면 다시 다운로드(다시 전송해준다)
  • 만일 변경되지 않았다면 서버는 304 Not Modified 응답을 보낸다, (redirect)

→ 자원 변경 안됐으니까 캐시로 redirect 해라라는 의미

캐시된 자원의 변경 - 2

  • Etag를 통해 자원의 변경 여부 감지 가능
  • 서버는 캐시된 자원이 Etag라는 식별 문자를 붙이고,
  • 클라이언트는 If-None-Match 헤더를 통해 해당 Etag가 변경되었는지를 물어본다.(검증)
  • Etag : 자원의 붙이는 버전 이름

'개발 > Network' 카테고리의 다른 글

컨텐츠 협상  (0) 2024.01.31
쿠키  (0) 2024.01.31
HTTP 헤더  (0) 2024.01.31
HTTP 메세지 개관  (0) 2024.01.31
HTTP의 특성  (0) 2024.01.31