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매우 중요한 정보일 경우, 무조건 원 서버의 데이터를 가져오기 위하여
