캐시와 검증 헤더

김동윤·2023년 8월 22일
0
post-thumbnail

🌎 캐시 시간 초과

서버에서 기존 데이터를 변경하지 않음

  • 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인 할 수 있는 방법 필요

  • 만약 캐시 시간이 초과가 안되면 브라우저 캐시에서 갖고 온다.

  • 캐시 시간이 초과된다면 위 사진과 같이 요청을해서 서버의 데이터 최종 수정일과 같다면 수정이 안되었기 때문에 밑의 사진처럼 클라이언트에게 전송한다.

  • 이때 body부분이 없기에 서버에서 보낼 데이터의 용량이 작다.

  • 클라이언트는 캐시에 저장되어있는 데이터 재활용

  • Last-Modified, If-Modified-Since는 1초 미만 단위로 캐시조정이 불가능

  • 같은 데이터를 수정해서 날짜가 다르지만 결과물은 같아도 다른 데이터로 취급 받음

  • 주석과 같은 영향이 없는 캐시를 유지하고 싶은 경우에 문제가 있음

  • 이를 보완하기 위해 ETag(Hash를 이용)를 사용

  • 단순하게 ETag만 보내서 같으면 유지, 다르면 다시 다운

  • 캐시 제어 로직을 서버에서 완전히 관리

  • 클라이언트는 단순히 이 값을 서버에 제공(캐시 메커니즘 모름)

🌎 프록시 캐시

origin server

  • 원래 서버에 접근 할 때 직접 접근하지 않고 프록시 캐시 서버에서 데이터를 갖고 오는 경우도 있다
    ex) 미국에 있는 서버에 데이터를 갖고 올려고 할 때 물리적으로 멀어서 한국에 프록시 캐시 서버를 설치해서 거기서 데이터를 갖고 옴

🌎 캐시 무효화

Cache-Control: no-cache

  • 데이터는 캐시해도 되지만 항상 원 서버에 검증하고 사용

Cache-Control: must-revalidate

  • 캐시 만료후 최초 조회시 원 서버에 검증해야함
  • 원 서버 접근 실패시 반드시 오류가 발생해야함 - 504(Gateway Timeout)
  • must-revalidate는 캐시 유효 시간이라면 캐시를 사용함

no-cache

must-revalidate

*참고) 김영한님의 강의자료

profile
Back-End

0개의 댓글