언제 사용할까?
- Conditional GET을 이용하여 트래픽은 줄일 수 있으나, Round Trip은 줄일 수 없다.
- Round Trip
- 패킷이 보내지고 응답을 받을 때까지 걸리는 시간
- 즉, 리소스의 변경 사실을 확인하기 위해서라면 원 서버에 요청을 보내고 응답을 기다려야 한다.
- 원 서버가 멀리 있다면 이 지연이 수백 ms일 수 있다.
- 이 지연까지 줄이고 싶어 탄생하게 된 개념
용어
- Fresh (신선한): freshness_lifetime > current_age
- Stale (상한): freshness_lifetime <= current_age
브라우저 캐시
- 캐시된 응답이 아직 fresh한 경우
- 브라우저 내에 저장된 값 반환 (Read from disk)
- 캐시된 응답이 stale한 경우
- 서버로 요청을 보냄 (Validation)
- 리소스 변경이 없는 경우
- 리소스 변경이 있는 경우
Cache-control
- 예전에 Pragma로 사용
- HTTP 1.1 Spec
- 해당 캐시 동작을 변경하고 싶다면 서버에서 해당 헤더를 변경하면 된다.
- Expire의 경우 절대 시간 표현이나 해당 헤더는 상대시간 표현 가능