📓 웹이란

웹 본질은 요청을 주고 결과를 받는 이 사이의 모든 것. 웹 성능은 요청을 줬을 때 결과를 가능한 빠르게 받는 것.

여기서 결과를 HTTP Resources라 한다.

HTTP Resources : 웹 페이지 뿐만 아니라 영상, 이미지 같은 스크립트도 포함.


웹 브라우저와 서버에서 요청을 받고 반환을 할 때 그 요청에 대한 결과가 똑같은 거라면, 브라우저는 매번 서버에게 받아올 필요가 없고 서버는 매번 브라우저에게 만들어줄 필요가 없다.
즉 이전의 결과를 재사용하면 된다.


이렇게 재사용하기 위한 것이 캐시라고 생각하면 된다.






📓 캐시

브라우저와 서버 사이 중간에 놓는 임시 저장소로 기간을 설정하여 내용을 재활용하기 위해 저장해 놓고 사용하기 위한 것이다.

처음에 브라우저에서 요청을 보내고 WS에서 요청을 반환하면 이 내용을 웹 브라우저에 저장할지 캐시로 임시 저장소를 만들어 놓고 저장할지 결정을 한다. (2개 모두도 가능)


CPU 캐시 : CPU 연산을 위해 메모리에서 값을 가져와 사용한 후 폐기한다.

HTTP 캐시 : 웹 요청에 따른 결과를 임시 저장 후 반복 요청 시 저장본 반환.

🏷️ Cache-Control

클라이언트와 서버간에 통신 과정을 거치면서 클라이언트는 네트워크를 거치는 시간이 소비되고 서버는 요청을 처리하는데 시간이 소비된다.
같은 데이터를 요청을 해서 같은 통신 과정을 거치게 되면 낭비가 되기 때문에 이 낭비를 줄이기 위한 것이 HTTP에서 제공하는 헤더(Headers)인 Cache-Control 이다.






📓 HTTP Cache의 종류

클라이언트에 붙어서 해당 웹 브라우저만을 위한 Private이 있고 서버에 가까이 있어 모든 웹 브라우저들을 위한 Shared가 있다.

Private을 할지 Shared를 할지는 서버가 결정한다. 웹 브라우저와 웹 서버 사이 HTTP Cache를 놓고, 그곳에 재사용하려는 HTTP Resources 결과를 저장한다.

🏷️ Private의 경우와 Shared의 경우

HIT : 데이터가 캐시 메모리에 있으면 적중(HIT)되었다고 한다. (없으면 실패)

🏷️ Private

브라우저에 위치해서 브라우저에서 사용하고 저장되는 캐시이다.
Private은 브라우저 캐시와 관리형 캐시가 있다.

브라우저 캐시 : 웹 서버에 의한 제어로 Header를 통한 제어
관리형 캐시 : 서비스 개발자가 직접 제어.


🏷️ Shared(Public)

서버에 가까이 있어 모든 웹 브라우저들을 위한 것이다. 공용으로 사용되는 프록시 캐시 서버에 저장되는 캐시이다. 브라우저와 서버 사이에 존재하여 프록시 캐시와 관리형 캐시로 나뉜다.

명확하게 private과 public 캐시의 차이는 한 명의 사용자만 사용하느냐 한 명 이상의 사용자가 재사용할 수 있도록 응답을 저장하느냐 이다.
즉 클라이언트 별로 개인 전용의 캐시를 가지고 있느냐 클라이언트들이 공용의 캐시를 사용하느냐를 생각하면 쉽다.

프록시 캐시 : HTTP Cache를 어떻게 처리하라고 웹 서버가 반환하는 응답에 대해서만 Header를 통해 제어.
관리형 캐시 : 개발자가 직접 어떤 데이터들을 캐싱할지 업로드하고, 삭제하고, 배포 및 제어. 배포, 캐싱할 데이터 직접 업로드 등.



🏷️ 프록시 캐시 예시

넷플릭스에 대한 예시로 들었다. 이게 결국 실제로 인강에서 들었던 것과 매우 비슷했다.
우리나라에서 넷플릭스의 영화, 드라마들을 멀리 있는 미국까지 전달하려면 오래 걸린다.
이 영상들을 다운 받으려는 사람들이 전부 다 다운 받는 시간을 기다려야 하는 것이다.
그래서 미국에 있는 origin서버 입장에서는 사용자에게 응답이 너무 느리기 때문에 한국 어딘가에 프록시 캐시 서버를 넣어놓고 브라우저가 미국에 있는 origin 서버에 직접 접근하는 것이 아닌 한국에 있는 프록시 캐시 서버에 접근하도록 하는 것이다.
그러면 DNS 등을 확인했을 때 한국에 있는 프록시 캐시 서버를 요청하도록 되어있다는 것을 보고 IP를 한국에 있는 프록시 캐시 서버로 보낸다. 그렇게 되면 프록시 캐시 서버는 응답 속도가 미국에 있는 origin 서버보다 빠르게 된다.



서버 캐시 : HTTP Cache가 아닌 웹 서버에서 사용하는 캐시에도 로컬 캐시와 글로벌 캐시가 있다.
가장 오랫동안 사용되지 않은 것 먼저 폐기하는 LRU 방식.

Local을 사용할지 Global을 사용할지 선택이 필요하다.

profile
일상의 인연에 감사하라. 기적은 의외로 가까운 곳에 있을지도 모른다.

0개의 댓글