캐싱이란 저장한다는 뜻이다.

컴퓨팅에서 캐싱은 오랜 시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 절감하는 기법을 말한다.

 

실생활 예)

* 시험을 볼 때 원리를 이해하고 문제를 푸는 것이 아니라 덤프를 외워서 답안을 작성한다.

* 웹 브라우저는 한번 다운로드한 이미지 파일은 임시저장 디렉토리에 저장했다가 다음 요청이 있을 때

  다운로드 하지 않고 다운받아 둔 이미지를 사용한다.

* CPU는 연산의 결과를 빠르게 저장하기 위해서 메인 메모리보다 빠른 캐쉬 메모리를 사용해서

  빠르게 작업을 처리한다.

 

코딩 예)

https://ejonghyuck.github.io/blog/2016-12-12/unity-coroutine-optimization/

WaitForSeconds 인스턴스를 new로 생성할때마다 가비지가 생성되기 때문에, 따로 정의하여 캐싱했다.

 

Caching의 난제

캐쉬의 가장 큰 문제는 연산의 결과가 달라졌을 때의 처리다. 웹브라우저 캐쉬를 예로 들어보자. 생활코딩의 로고를 임시저장소에 저장했고, 생활코딩에 접속 할 때 임시저장소의 이미지를 사용하고 있는 상황에서 생활코딩의 로고가 리뉴얼되서 새로운 것으로 바꼈다면 어떻게 될까? 이것이 캐쉬의 일반적인 문제인 '갱신의 어려움'이다. 

TTL

TTL은 Time To Live라는 의미로 캐쉬를 생성할 때 캐쉬의 만료기간을 정해두는 것이다. 지정된 만료일이 지나면 캐쉬를 삭제하고 다시 캐쉬를 생성하는 기법이다. 

캐쉬의 명시적인 삭제

캐쉬가 유효하지 않을 때 캐쉬를 명시적으로 삭제해서 새로운 캐쉬가 만들어지도록 하는 것이다. 

 

캐쉬의 저장소

캐쉬 데이터를 어디에 저장할 것인가의 문제는 어떤 방식의 캐쉬를 사용할 것인가 만큼 중요한 문제다. 다음은 캐쉬를 저장하는 주요 저장소이다. 

파일

캐슁을 저장할 때 가장 기본적으로 고려되는 저장소다. 장점은 저렴하다는 점이다. 단점은 캐쉬 데이터를 여러 시스템에서 공유하기가 어렵다는 점과 메모리 대비 느리다는 점을 들 수 있다. 또한 캐쉬 메커니즘을 직접 구현해야 하는 어려움이 있다. 

메모리

대용량의 메모리를 지원하는 하드웨어가 늘어나면서 메모리를 캐쉬 저장소로 이용하는 사례가 많아지고 있다. 특히 Memcached와 같은 솔루션을 이용하면 캐쉬의 생성, 소멸을 솔루션에게 위임할 수 있고, 또 네트워크를 통해서 접근 하는 기능을 지원하기 때문에 단일 캐쉬에 대해서 여러 머신에서 엑세스 할 수 있다는 장점이 있다. 무엇보다도 큰 장점은 파일 보다 훨씬 빠르게 데이터를 처리 할 수 있다는 점이다. 단점은 비싸다.

데이터베이스

데이터베이스도 데이터를 캐쉬하기에 좋은 공간이다. 자체적인 보안 시스템을 갖추고 있고, 네트웍을 통해서 접근 할 수 있기 때문에 캐슁 데이터를 공유할 수 있는 장점도 있다. 메모리 보다 느린 것이 단점이다.

 

 

ejonghyuck.github.io/blog/2016-12-12/unity-coroutine-optimization/

opentutorials.org/course/697/3839

'공부 > 개념 & 유용한 내용' 카테고리의 다른 글

UniTask와 Task의 차이점 및 사용해야 하는 이유  (0) 2023.04.03
에디터 코루틴  (0) 2023.03.30
코루틴 최적화 (가비지 덜 생성되게)  (1) 2020.09.24
CDN 이란?  (0) 2020.08.31
Json 이란?  (0) 2020.08.28

+ Recent posts