HTTP Header2

KJH·2023년 3월 28일
0
post-thumbnail
post-custom-banner

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

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

post-custom-banner

0개의 댓글