[Deep HTTP] 캐시와 조건부요청

Dae-Hee·2022년 2월 10일
0

Deep HTTP

목록 보기
6/6
post-thumbnail

'모든 개발자를 위한 HTTP 웹 기본 지식'
김영한님 인프런 강의 정리

  • HTTP 캐시와 조건부요청

▪︎ 캐시 지시어


  • Cache-Control : max-age
    • 캐시 유효시간, 초 단위
  • Cache-Control : no-cache
    • 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용
  • Cache-Control : no-store
    • 데이터에 민감한 정보가 있으므로 저장하면 안됨

캐시 무효화 응답

  • Cache-Control : no-cache, no-store, must-revalidate
  • Pragma : no-cache

▪︎ 조건부 요청 헤더


  • 검증 헤더로 조건에 따른분기
  • If-Modified-Since : Last-Modified 사용
  • If-None-Match : ETag 사용
  • 조건이 만족하면 200 OK
  • 조건이 만족하지 않으면 304 Not Modified

If-Modified-Since 예시

데이터 미변경 예시

  1. 캐시: 2020/11/10 10:00:00 vs 서버: 2020/11/10 10:00:00
  2. 304 Not Modified, 헤더 데이터만 전송(Body 미포함)
  3. 전송용량 줄어듬

데이터 변경시

  1. 캐시: 2020/11/10 10:00:00 vs 2020/11/11 11:11:11
  2. 200 OK, 모든 데이터 전송(Body 포함)
  3. 전송용량 그대로

Last-Modified, If-Modified-Since 단점

  • 1초 미만(0.x초) 단위로 캐시 조정 불가능
  • 날짜 기반의 로직 사용
  • 데이터를 수정했지만 결과가 같더라도 검증 불가
  • 서버에서 별도의 캐시 로직을 관리하고 싶은 경우
  • 크게 영향이 없는 소스 수정을 하더라도 캐시를 유지하고 싶은 경우

▪︎ 검증 헤더


  • 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터
  • Last-Modified, ETag

ETag, If-None-Match

  • ETag(Entity Tag)
  • Last-Modified, If-Modified-Since 단점 보완
  • 캐시용 데이터에 임의의 고유한 버전 이름을 달아둠
  • 데이터가 변경되면 이 이름을 바꾸어서 변경함

Reference

https://www.inflearn.com/course/http-웹-네트워크

0개의 댓글