프록시 캐시와 캐시무효화

이경영·2022년 9월 29일
0

HTTP

목록 보기
14/14

원 서버 직접 접근

: 한국에 있는 클라이언트가 미국에 있는 원 서버에 접근할때
이미지 하나 다운로드 받으려면 0.5ms를 기다려야함..

프록시 캐시 서버를 한국 어디엔가 두게되면
한국에 있는 클라이언트가 이 곳을 거쳐서 접근하게 만들어놓음.

한국 어딘가에 있는 서버에서 다운받기 때문에 응답시간이 훨신 빠름 0.1ms
(ex. 유투브) : 첫번째 유저는 보통 느린경우가 많음 한번 다운로드 받아놓으면 빨라짐

Cache-Control : 캐시 지시어 - 기타

  • Cache-Control: public

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

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

    • 프록시 캐시에만 적용되는 max-age
  • Age: 60 (HTTP 헤더) (이런게 있다)

    • 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간(초)


캐시 무효화 : 확실한 캐시 무효화 응답

: 웹 브라우저가 임의로 캐시해버릴 수도 있음.
: 원하지 않는다면 아래의 지시어들을 전부 넣어줘야함

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

캐시지시어 - 확실한 캐시 무효화

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

: must-revalidate가 왜 필요한지?



만약 순간적으로 네트워크가 단절된 경우.
오류보다 오래된 데이터라도 보여주는게 나을 상황에서 서버를 설정한다.

must-revalidate가 들어가버리면 접근 불가시에 503 Gateway Timeout을 반환함.
Ex) 통장잔고 같은건 오류가 나서 안보여야함. 그런데 과거데이터가 보이면 안됨.

profile
꾸준히

0개의 댓글