캐시 무효화

현시기얌·2022년 3월 10일
0

HTTP 웹 기본 지식

목록 보기
26/26

Cache-Control

확실한 캐시 무효화 응답

  • Cache-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache
    • HTTP 1.0 하위 호환

Cache-Control

  • no-cache
    • 데이터는 캐시해도 되지만 항ㅈ상 원 서버에 검증하고 사용(이름에 주의해야 한다.)
  • no-store
    • 데이터에 민감한 정보가 있으므로 저장하면 안된다. (메모리에서 사용하고 최대한 빨리 삭제한다.)
  • must-revalidate
    • 캐시 만료후 최초 조쇠 시 원 서버에 검증해야 한다.
    • 원 서버 접근 실패시 반드시 오류가 발생햐야 한다. - 504(Gateway Timeout)
    • must-revalidate는 캐시 유효 시간이라면 캐시를 사용한다.
  • Pragma: no-cache
    • HTTP 1.0 하위 호환

no-cache vs must-revalidate

  1. 웹브라우저에서 no-cache + ETag를 사용해서 캐시 서버에 요청한다.
  2. 프록시 캐시 서버에서 no-cache를 보고 내가 처리하면 안된다는 것을 알고 원서버에 요청한다.
  3. 원서버에서 검증한다.

  1. 원서버에서 변경된 것이 없다는 것을 확인하면 프록시 캐시 서버에 304를 응답해준다.
  2. 프록시 캐시 서버에서 웹 브라우저로 304를 응답해준다.
  3. 웹 브라우저에서 브라우저 캐시에서 캐시 데이터를 사용한다.

Q) 그런데 만약 프록시 캐시 서버에서 원 서버로 접근이 불가할때는 어떻게 될까?
A)
1. 프록시 캐시 서버에서 웹 브라우저에게 Error를 응답한다.
2. 오래된 데이터라도 보여주고 싶으면 200 응답을 한다.

Q) must-revalidate 옵션일 때 원 서버에 접근을 할 수 없다면?
A) 무조건 504 Gateway Timeout 예외가 발생한다.

profile
현시깁니다

0개의 댓글