주니어 개발자 성장기

(22.11.21) HTTP(8) - 헤더(4) 본문

Web

(22.11.21) HTTP(8) - 헤더(4)

Junpyo Lee 2022. 11. 21. 21:45

캐시와 조건부 요청

 

프록시 캐시

  • 원서버와 직접 통신하는 경우 시간이 오래걸리기 때문프록시 캐시 서버를 통해서 자주 전송하는 데이터들을 캐싱해놓는다.
  • private 캐시: 웹브라우저에서 사용하는 캐시
  • public 캐시: 프록시 캐시 서버에서 사용하는 공용 캐시

캐시 지시어(directives) - 기타

  • Cache-Control: public
    • 응답이 public 캐시에 저장되어도 됨

 

  • Cache-Control: private
    • 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함(기본 값)

 

  • Cache-Control: s-maxage
    • 프록시 캐시에만 적용되는 max-age

 

  • Age: 60(HTTP 헤더)
    • 오리진 서버에서 응답 후 프록시 캐시내에 머문 시간(초)

 

캐시 무효화

Cache-Control

확실한 캐시 무효화 응답

  • 캐시를 웹브라우저가 임의로 하는 경우도 있기 때문에, 캐시를 하면 안되는 정보를 캐시하지 않기 위해서
    아래의 헤더를 모두 넣으면 확실히 대응이 된다.
  • Cacge-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache
    • HTTP 1.0 하위 호환

 

Chache-Control: must-revalidate

  • 캐시 만료 후 최초 조회시 원 서버에 검증해야함
  • 캐시 유효시간이라면 캐시를 사용한다.
  • no-cache도 원 서버에 검증하는 것이 원칙이다.
기능이 같아 보이는데 둘 다 써야하는 이유는?
  • no-cache의 경우 네트워크 단절 등의 이유로 Origin 서버와 통신이 불가능 할 때 캐시 서버 설정에 따라 캐시 서버에 있는 캐시 데이터(오래 되었을 수도 있는 데이터)를 보낼 가능성이 있다.
  • must-revalidate는 원 서버에 접근 실패하면 반드시 오류를 내도록 한다 504(Gateway Timeout)
  • 캐시를 하면 안되는 데이터이기 때문에, 원 서버 접근 실패 시 무조건 오류를 내는 것이 좋다.

 

'Web' 카테고리의 다른 글

(22.11.21) HTTP(7) - 헤더(3)  (0) 2022.11.21
(22.11.14) HTTP(6) - 헤더(2)  (0) 2022.11.14
(22.11.14) HTTP(6) - 헤더(1)  (0) 2022.11.14
(22.10.29)HTTP(5) - 상태코드  (0) 2022.10.29
(22.10.26) HTTP(3) - 메서드 활용  (0) 2022.10.27