만약에 웹브라우저에서 저 멀리 있는 미국에 있는 원 서버까지 보내려면 되게 느리다. 대략 500ms가 걸린다고 해보자. 그래서 이미지 하나 다운받는데 500ms가 걸리는데 중간에 프록시 캐시를 도입하면 한국 어딘가에다가 프록시 캐시를 넣어두고, 요청이 오면 미국 원서버로 바로 보내는 것이 아니라 프록시를 거쳐서 오게 한다.
그래서 유투브를 볼 때, 사람들이 잘 안보는 외국 컨텐츠를 보면 유투브 다운로드가 굉장히 느리다. 사람들이 많이 보는 콘텐츠를 다운로드 받을 때는 로딩속도가 굉장히 빠르다. 그 이유는 한국에 있는 수많은 사람들이 다 다운로드를 받았기 때문이라고 한다!
첫 번째 유저는 보통 느리다. 두 번째 유저부터는 빨라진다. 퍼블릭 캐시와 프라이빗 캐시가 있는데, 중간에서 공용에서 사용하는 캐시를 퍼블릭 캐시라고 한다. 웹브라우저나 로컬에 저장된 캐시는 프라이빗 캐시라부른다.
Cache-Control : no-cache, no-store, must-revalidate
Pragma : no-cache
HTTP 1.0 하위 호환
이 페이지는 진짜 캐시가 되면 안돼! 라고 한다면 위에 코드들을 다 넣어주면 된다. 예를들어 통장잔고라던가 이런 개인정보유출이 되는 것에는 위에 코드를 써서 캐시를 막아 놓아야 한다. (국내 네이버에는 이렇게 되어있다.)
노캐시는 예를들어 Etag로 들어가면 프록시 캐시로 간다. 그럼 프록시 캐시가 이건 내가 처리하는 것이 아니군! 하고 원서버에 넘겨준다. 그러면 원서버가 검증을 해본다. 그럼 정상적으로 응답을 해준다.
1.캐시서버요청 옵션이 들어가버리면 프록시 캐시가 들어간다. 그런데, 프록시캐시가 이거 내가 처리하는거 아니네 라고하면 네트워크가 바로 단절이 된다. 그럼 504 게이트웨이 타임아웃이 나오도록 하는 것이 HTTP 스펙에 적혀있다.
예를들어서, 만약에 ! 통장잔고같은 돈과 관련된 것들은 정말 중요하다. 이것들은 오류가 나서 안보여야 한다. 프록시 캐시에 있는 과거 데이터들이 보이면 안된다.
이런 것들을 확실하게 프록시 캐시에 안보이게 해주려면
Cache-Control : no-cache, no-store, must-revalidate
Pragma : no-cache 👈 (HTTP 1.0하위호환까지 막아주려면 이 코드넣기)
이 코드 처리를 해줘야 한다.
출처가 있는 자료같은데..