Skip to main content

HTTP Header2

·236 words·2 mins· loading
Table of Contents

HTTP Header1에서 이어짐


검증 헤더1
#

Last-Modified, if-modified-since

캐시 유효 시간이 초과한 경우, 서버의 데이터는 변경되었을 수도 있다.

  • 캐시가 만료 후에도 데이터가 변경되지 않았다면, 저장된 캐시 재사용 가능
  • ❗️단, 데이터가 같다는 사실을 확인할 방법 이 필요

Last-Modified 헤더를 통해서 이를 확인

동작방식

  1. 서버에서 Last-Modified 헤더를 전송
  2. 캐시 시간 초과시, 브라우저가 if-modified-since를 서버에 전송
  3. 서버에서 판단
  • 변경안됬으면 304 Not Modified 응답(데이터전송 ❌) => 캐시 정보 갱신 & 응답 결과 재사용
  • 변경됬으면 200 모든 데이터 포함

검증 헤더 2
#

Etag, If-None-Match

  • Etag : 캐시의 데이터에 임의의 버전 이름을 달아둠
  • 데이터가 변경대면 Etag를 변경 (Hash)
  • If-None-MatchEtag 보내서 같으면 304 Not Modified , 다르면 다시 받기(200)
  • 캐시 제어 로직을 서버에서 완전히 관리

헤더 정리
#

  • Cache-Control : 캐시 제어

    • max-age : 유효시간(초단위)
    • no-cache : 데이터는 캐시하지만, 항상 검증❗️
    • no-store : 저장하면 안됨 (메모리에서 사용하고 바로 삭제)
  • Expires : 캐시 만료일 지정 (Cache-control:max-age 권장, 중복시 무시됨)

  • 검증헤더 Etag,Last-Modified

  • 조건부 요청

    • If-Match,If-None-Match :Etag사용시
    • If-Modified-Since, If-Unmodified-Since : Last-Modified 사용시

프록시 캐시
#

기타 캐시 지시어
#

  • Cache-Control : public : 응답이 public 캐시에 저장되어도 됨
  • Cache-Control : private : 응답이 해당 사용자만을 위한 것, private 캐시에 저장 (default)
  • Cache-Control : s-maxage : 프록시 캐시에만 저장되는 max-age
  • Age :60(Http 헤더) : 오리진 서버에서 응답 후, 프록시 캐시 내에 머문 시간(초)

캐시 무효화
#

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

  • must-revalidate
    • 캐시 만료후 최초 조회시, 원 서버에 검증해야됨
    • 원 서버 접근 실패시, 반드시 오류504

매우 중요한 정보일 경우, 무조건 원 서버의 데이터를 가져오기 위하여