HTTP Header1에서 이어짐
Last-Modified
, if-modified-since
캐시 유효 시간이 초과한 경우, 서버의 데이터는 변경되었을 수도 있다.
Last-Modified
헤더를 통해서 이를 확인
동작방식
1. 서버에서 Last-Modified
헤더를 전송
2. 캐시 시간 초과시, 브라우저가 if-modified-since
를 서버에 전송
3. 서버에서 판단
304 Not Modified
응답(데이터전송 ❌) => 캐시 정보 갱신 & 응답 결과 재사용200
모든 데이터 포함Etag
, If-None-Match
Etag
: 캐시의 데이터에 임의의 버전 이름을 달아둠Etag
를 변경 (Hash)If-None-Match
로 Etag
보내서 같으면 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
매우 중요한 정보일 경우, 무조건 원 서버의 데이터를 가져오기 위하여