면접 질문

캐시(Cache)

노엠디엔 2023. 2. 23. 12:48

캐시(Cache)란?

데이터나 값을 미리 복사해 놓는 임시 저장소를 말합니다.

웹 프런트엔드에서 필요한 데이터를 매번 서버에 요청해서 가져와 사용하는 것은 비효율 적이며  서버에 부담을 주고 시간도 오래 걸린다. 만약 같은 요청에 같은 데이터를 응답하는 요청이라면 데이터를 메모리에 저장해 놓고 쓰는 것이 효율적이다. 이렇게 응답 데이터의 사본을 저장하는 공간을 캐시라고 합니다. 

캐시는 웹에도 존재하며, 웹 캐시(web cache) 또는 HTTP 캐시(HTTP cache)라고 말합니다. 웹 캐시에는 서버-클라이언트 통신간 발생하는 정적 자산(HTML pages, CSS, JavaScript files, images, JSON 등)을 웹 캐시에 복사합니다.

 

캐시의 종류

종류 위치 설명
브라우저 캐시 브라우저 한 번 받아온 리소스들을 재사용하여 속도가 빨라짐
프록시 캐시 브라우저와 ISP 조직 내에서 접속하는 웹 사이트의 리소스들을 캐시하여 속도가 빨라지고 네트워크 사용량을 줄임
트랜스패어런트 캐시 ISP ISP는 이 캐시를 이용하여 ISP간 대역폭 낭비를 줄임
리버스 프록시 캐시 ISP와 웹 서버 원본 서버로의 트래픽을 줄이고, 사용자에게 빠른 응답을 준다.

 

캐시(cache) 장점

  • 캐시에 데이터를 미리 복사해 놓으면, 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있음
  • 접근 시간에 비해 원래 데이터에 접근하는 시간이 오래 걸리는 경우, 혹은 값을 다시 계산하는 시간을 절약하고자
    하는 경우에 사용

 

캐시(cache)의 단점

  • 메모리 저장공간은 속도가 빠를 수 록 용량이 적고 가격이 높다.

 

캐시(cache)의 지역성

 파레토 법칙과, 캐시에 저장되는 정보(지역성)

  • 캐시의 고단가 때문에, 캐시에 저장되어야 하는 정보는 선별된 정보여야 된다.
  • 파레토의 법칙처럼 자주, 그리고 반복해서 사용되는 데이터를 선별하는 데에 사용되는 것이 지역성

 

시간적 지역성

  • 특정 데이터가, 가까운 미래에 또 한 번 데이터에 접근할 가능성이 높은 경우
  • 메모리 상의 같은 주소에 여러 차례 쓰기를 수행하는 경우

 

공간적 지역성

  • 특정 데이터와 가까운 주소가 순서대로 접근된 경우
  • CPU 캐시, 디스크 캐시의 경우 한 메모리 주소에 접근 시, 주소뿐 아니라 해당 블록을 전부 캐시로 가져옴
  • 이때, 메모리 주소를 오름차순이나 내림차순으로 접근하면 캐시에 이미 저장된 같은
    블록의 데이터에 접근하는게 됨 (캐시의 효율성 향상)

 

순차 지역성

  • 데이터가 순차적으로 연결되는 경향을 보임, 프로그램 안에 명령어가 순차적으로 구성

 

캐시(cache)의 동작방식

  • 데이터 요청이 들어오면, 먼저 캐시에서 데이터 탐색
  • 캐시가 없거나 오래된 경우 원본 데이터가 저장된 곳에서 데이터를 조회한 후 캐시에도 데이터를 복사/갱신한다.
  • 캐시에 데이터가 있으면 캐시의 저장된 데이터를 제공
  • 오래된 데이터는 삭제

 

프론트에서 캐시를 활용하는 방법

리액트 환경이라면 useMemo, useCallback 등으로 특정 연산 값이나 함수를 캐싱하여 불필요한 연산을 줄이고 컴포넌트 렌더링 속도를 향상시킨다거나, 서버에서 가져온 데이터를 캐싱해두고 일일히 서버에 요청을 할 필요가 없어짐

 

정리 :캐시란 데이터나 값을 미리 복사해 놓는 임시 저장소를 말합니다.  필요한 데이터를 매번 서버에 요청해서 가져와 사용하는 것은 비효율적이기 때문에 응답 데이터의 사본을  캐시에 저장해서 사용합니다. 

출처: https://yanacoding.tistory.com/entry/CS-%EC%BA%90%EC%8B%9CCache%EB%9E%80

https://mmsesang.tistory.com/entry/%EC%9B%B9-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%B4-%EC%BA%90%EC%8B%9C%EC%97%90-%EB%8C%80%ED%95%B4-%EA%B3%B5%EB%B6%80%ED%95%B4%EB%B3%B4%EC%9E%90