Cache-Control: max-age
- 캐시 유효 시간, 초 단위
Cache-Control: no-cache
- 데이터는 캐시해도 되지만, > if-modified-since 혹운 if-none-match를 사용해서 데이터를 가져온다.(조건부)
- 항상 원 서버에 검증하고 사용 > 프록시 캐시 (중간 캐시)에서 가져오지 않고, 원서버에서 가져오도록 한다.
Cache-Control: no-store
- 데이터에 민감한 정보가 있으면 저장하면 안됨
- 보통 캐시 같은 경우 하드 디스크에 저장됨 (메모리에서 사용하고 최대한 빨리 삭제)
[프록시 캐시]
Cache-Control: public
- 응답이 public 캐시에 저장되어도 됨
- public 캐시: 한국의 클라이언트와 미국의 원서버 사이에 있는 프록시 캐시 서버
Cache-Contorl: private
- 응답이 해당 사용자만을 위한 것, private 캐시에 저장해야 함(기본값)
- private 캐시: 한국의 클라이언트의 캐시
Cache-Control: s-maxage
- 프록시 캐시에만 적용되는 max-age
Age: 60
- 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간(초)
확실한 캐시 무효화 응답
Cache-Control: no-cache, no-store, must-revalidate
(반드시 추가)
Pragma: no-cache > HTTP 1.0 하위 호환
Cache-Control: must-revalidate
- 캐시 만료후 최초 조회시 원 서버에 검증해야 함
- 원 서버 접근 실패시 반드시 오류가 발생해야하마 - 504(Gateway Timeout)
- 캐시 유효 시간이라면 캐시를 사용함
no-cache vs must-revalidate
[no-cache]
1. 캐시 서버 요청 > no-cache + ETag
2. 프록시 캐시 > PASS
3. 원 서버 요청 > 원 서버 검증
4. 원 서버 -> 프록시 캐시 > 응답 304 Not-Modified
5. 프록시 캐시 -> 원서버 > 응답 304 Not-Modified
[no-cache 예외]
프록시 캐시 -> 원 서버로 접근시 네트워크가 단절 되었을 때 원 서버 접근 불가
> 프록시 캐시는 오류보다는 오래된 데이터라도 보여주자 ( Error or 200 OK )
[must-revalidate 예외]
프록시 캐시 -> 원 서버 접근시 네트워크가 단절 되었을 때
> 무조건 504 Gateway Timeout 발생
출처: 인프런_김영한 선생님의 HTTP 웹 기본 지식
'HTTP' 카테고리의 다른 글
[HTTP] 캐시_304 Not Modified (Last-Modified& ETag) (0) | 2022.09.03 |
---|---|
[HTTP] 헤더_협상 (0) | 2022.09.02 |
[HTTP] 헤더_표현 (0) | 2022.09.02 |
[HTTP] 상태코드 (2xx, 3xx, 4xx) (0) | 2022.09.02 |