캐시(Cache)란?
[Cache]
Cache 란 자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 장소를 가리킨다. 아래와 같은 계측 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
리액트가 우리의 컴포넌트를 인터랙티브 하게 만들어주고, states, props 같은걸 컴포넌트에게 주니까 프레임워크라고 생각하기도 한다.

Cache는 아래와 같은 경우에 사용을 고려하면 좋다.
- 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 군한 API 데이터)
- 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸내일)
Cache에 데이터를 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하였다가 불러다 쓰는 것을 의미한다. Enterprise급 Application에서는 DBMS의 부하를 줄이고, 성능을 높이기 위해 캐시(Cache)를 사용한다. 원하는 데이터가 캐시에 존재할 경우 해당 데이터를 반환하며, 이러한 상황을 Cache Hit라고 한다. 하지만 원하는 데이터가 캐시에 존재하지 않을 경우 DBMS 또는 서버에 요청해야 하며 이를 Cache Miss라고 한다. 캐시는 저장공간이 작기 때문에, Cache Miss가 발생하는 데이터의 경우 캐시 전략에 따라서 저장 중인 데이터를 변경해야 한다.
[ 캐시의 필요성 ]
파레토의 법칙

- 사회에서 일어나는 현상의 80%는 20%의 원인으로 인해 발생된다.
- 인터넷 통신의 80%가 20%의 사이트에 대한 액세스로 추정되며, 이 20%의 웹사이트 데이터를 캐시 해두면 효율을 극적으로 향상할 수 있다.
캐시의 장점
- 캐시를 사용하게 되면 네트워크 병목을 줄일 수 있다. 대부분의 네트워크는 원격에 있는 웹 서버와의 연결보다 로컬 네트워크 클라이언트에 더 넓은 대역폭을 제공한다. 즉, 캐시를 클라이언트와 가까운 곳에 두어 LAN을 통해 리소스를 요청하고 가져올 수 있다면 웹 서버에서 가져오는 것에 비해 빠른 속도로 가져올 수 있게 되어 네트워크 병목을 줄일 수 있다.
- 캐싱은 갑작스러운 요청 쇄도에 대처하는데 도움을 준다. 어떠한 사이트에서 특급 행사를 진행하여 사용자가 갑작스럽게 접속을 많이 하게 된다면 트래픽 급증으로 네트워크와 웹 서버의 심각한 장애를 야기시킬 수 있다. 캐시가 존재한다면 웹 서버에 대한 요청을 줄일 수 있어 도움을 줄 수 있다.
- 캐시를 두게 되면 거리로 인한 지연을 줄일 수 있다. 지연을 유발하는 데에는 네트워크 대역폭에 따라 달라질 수 있지만 거리도 지연을 유발할 수 있다. 만약, 클라이언트와 서버의 거리가 매우 멀다면 그것 또한 지연 발생의 원인이 될 수 있으므로 클라이언트와 가까운 곳에 캐시를 둔다면 지연을 줄일 수 있게 된다.
- 서버 간 불필요한 트래픽을 줄일 수 있으며, 웹 애플리케이션 서버의 부하가 감소된다.
- 캐시에 저장된 데이터를 빠르게 읽어와 애플리케이션을 사용하는 고객에게 쾌적한 서비스 경험을 제공할 수 있다.
- 시에 데이터를 미리 복사해 놓으면, 계산이나 접근 시간 없이 더 빠른 속도로 데이터를 접근
캐시의 단점
- 캐시(Cache)는 비싸다. 메모리 저장공간은 속도가 빠를수록 용량이 적고, 가격이 높다.
캐시를 사용할 수 있는 영역
브라우저 캐싱
이전에 방문했던 페이지, 제목의 썸네일 등을 서버로 요청하지 않고, 브라우저에 캐싱을 해두면 사용자는 자신의 요청을 서버로부터 기다리지 않고, 바로 캐시메모리로 응답받을 수 있어 웹 서핑이 빠르다고 느끼고, 서버는 불필요한 요청을 받지 않아 과부하를 피할 수 있다.
Proxy
웹 브라우저와 서버 사이에 proxy라는 것을 두는 방식이다.
proxy는 “대리인”이라는 뜻의 영어 단어로서, 중간에서 뭔가를 대신해 주는 것을 ‘프록시’라고 한다.
프록시의 경우 여러 컴퓨터로부터 요청을 받고 처리하다 보니 같은 데이터가 자주 접근될 확률이 높아져서 캐시의 성능이 좋아지고, 데이터를 캐시에서 반환하는 확률이 더 높아진다.
참고
https://velog.io/@jini9256/%EC%BA%90%EC%8B%9C%EC%9D%98-%EC%9E%A5%EB%8B%A8%EC%A0%90