Network - HTTP Header Proxy Cache
원 서버 직접 접근
origin 서버
- 원서버에서 직접 데이터를 가져오기 때문에 비교적 느리다.
프록시 캐시 도입
- 프록시 캐시 서버에서 데이터를 가져오기 때문에 빠르다.
Cache-Control
캐시 지시어 (directives)
- Cache-Control: public
- Cache-Control: private
- 응답이 해당 사용자만을 위한 것이다.
- private 캐시에 저장해야 한다. (기본값)
- Cache-Control: s-maxage
- Age: 60 (HTTP 헤더)
- 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간 (초)
캐시 무효화
Cache-Control
확실한 캐시 무효화 응답
- Cache-Control: no-cache, no-store, must-revalidate
- Pragma: no-cache
캐시 지시어 (directives)
확실한 캐시 무효화
- Cache-Control: no-cache
- 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용 (이름에 주의)
- Cache-Control: no-store
- 데이터에 민감한 정보가 있으므로 저장하면 안된다.
- 메모리에서 사용하고 최대한 빨리 삭제
- Cache-Control: must-revalidate
- 캐시 만료 후 최초 조회시 원 서버에 검증해야 한다.
- 원 서버 접근 실패시 반드시 오류가 발행해야 한다. (504 Gateway Timeout)
- must-revalidate 는 캐시 유효 시간이라면 캐시 사용
- Pragma: no-cache
no-cache vs must-revalidate
no-cache 기본 동작
no-cache
- 원 서버에 접근할 수 없는 경우 서버 설정에 따라서 캐시 데이터를 반환할 수 있다.
- Error or 200 OK
must-revalidate
- 원 서버에 접근할 수 없는 경우 항상 오류가 발생해야 한다.
- 504 Gateway Timeout