본문 바로가기

HTTP

[HTTP] Cache-Control

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