GREEN.1229 2021. 2. 4. 15:38

안녕하세요. 그린입니다!

이번 포스팅에서는 Cache (캐시)에 대해 알아보겠습니다.✍️

 

1. 캐시란 ??

: 캐시(cache)는 데이터나 값을 미리 복사해 놓는 임시 저장소를 말한다.

 

-. 역할 및 장점

: 기존방식으로는 데이터 접근 시간이 오래 걸리거나 값을 다시 계산하는 시간을 절약할때 사용 (시간을 줄임!),

  캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

 

-. 단점

: 업데이트를 바로바로 해주지 않기에 즉각성이 떨어짐

 

2. 캐시를 구분하는 기준

 -. 클라이언트 / 서버

 : 클라이언트와 서버의 캐시는 구분된다.

 클라이언트는 클라이언트만의 local에 저장할 수 있는 캐시가 있으며,

 서버는 여러 클라이언트의 요청에 대해 저장할 수 있는 캐시가 있다.

 (서버에서도 부하를 줄이기 위해 서버에 자주하는 요청을 캐싱해둠)

 

 -. 저장장소

 1) 메모리

 2) 디스크: 앱 내부 디스크(UserDefaults, CoreData), 앱 외부 디스크

 

 -. 데이터가 저장되는 계층에 따른 구분

 : L1, L2, L3 캐시 (비용, 속도, 용량에 따라)

 

 -. 읽기 및 쓰기에 따른 구분

 1) 읽기 캐시: 한번 읽어들인 데이터를 캐시에 저장 후 추후 Read시 사용

 2) 쓰기 캐시: 읽기 캐시의 기능뿐 아니라 Write시 디스크에 바로 올리지 않고 캐시에 임시로 저장 후 추후 

                     캐시 데이터를 모아 한번에 디스크에 저장 (매번 변경 시 디스크에 여러번 그때그때 저장할 필요가 없다.)

 

3. 캐시 운용 정책

 1) 보안성 (캐시 접근 및 저장 관련)

 2) 데이터 수명

 3) 캐시 교체 정책 (Cache Replacement Policy)

  -. 데이터 사용시간에 따른 교체 (사용시간 작은것 부터..)

  -. LRU, FIFO, LFU 구조에 따라 교체

  -. Random, NUR, Optimal 등등...

 4) 저장하는 시점에 따른 정책

  -. Write Through: 쓰기 요청 시 즉시 저장

  -. Write Back: 쓰기 요청 시 캐시에서만 이뤄지고 바로 저장되지 않고 추후 캐시에서 해당 사항이 끝날때 최종으로 한번에 변경사항 저장

 

4. iOS에서 캐싱 방법

 1) Memory Cache: NSCache 기능 활용 --> 기기 종료 시 캐시 데이터가 날아간다. 

 2) Disk Cache: 기기 안에 저장되어 있지만 구현에 따라 앱 삭제 시 데이터 삭제 / 보존 할 수 있다. (UserDefaults, CoreData)

  -. FileManager를 사용하여 Cache Directory에 접근하여 자체 디렉터리를 만들어 관리

  -. ETag를 이용하여 디스크 캐시를 활용할 수 있다. (서버에서 해당 기능 지원할 시)

 

 

이렇게 캐시에 대해 알아보았습니다.

서버에서 이미지를 불러와 저장하고 하는 구현을 할 때 꼭 캐시 데이터에 대한 이해가 필요합니다.

또한 흔히 많이 사용하시는 카카오톡도 캐시를 적극 활용한 부분이라 생각됩니다. 채팅 데이터에 대해 곰곰히 생각해보면

캐시 데이터에 대해 조금 더 잘 이해할 수 있을거라 생각합니다.

멀고도 어려운 컴퓨터와 네트워크 세상.... 차근차근 하나씩 격파해 나가도록 하죠!

감사합니다😁