Caching이란?
캐싱(Caching)이란?
캐싱은 자주 사용되는 데이터나 계산 결과를 빠르게 접근할 수 있는 메모리에 임시로 저장하는 기술입니다. 이렇게 하면 데이터를 다시 불러올 때 시간과 자원을 절약할 수 있죠.
iOS에서는 이미지, API 응답, 데이터베이스 쿼리 결과 등 다양한 유형의 데이터를 캐시할 수 있습니다.
캐시 히트율(Cache Hit Rate)과 영향 요소
캐시 히트율이란?
캐시 히트율은 요청된 데이터가 캐시에 존재하여 바로 접근 가능한 비율을 말합니다. 이 비율이 높을수록 성능이 좋아지고, 낮으면 캐시 효율이 떨어진다고 볼 수 있어요.
영향을 끼치는 요소들
- 만료시간 (Expiration Time): 캐시된 데이터가 얼마나 오래 저장될지 결정합니다. 너무 짧으면 자주 캐시 미스가 발생하고, 너무 길면 오래된 데이터를 사용할 위험이 있어요.
- 알고리즘: 캐시에서 어떤 데이터를 제거할지 결정합니다. LRU(Least Recently Used), LFU(Least Frequently Used) 등이 대표적입니다.
- 캐시의 크기: 캐시의 크기가 클수록 더 많은 데이터를 저장할 수 있지만, 메모리 사용량도 증가합니다.
LRU와 LFU 비교
- LRU (Least Recently Used): 가장 오래 전에 사용된 데이터를 제거합니다. 최근에 사용된 데이터가 다시 사용될 가능성이 높다는 가정에 기반합니다.
- LFU (Least Frequently Used): 가장 적게 사용된 데이터를 제거합니다. 자주 사용되는 데이터가 중요하다는 가정에서 출발합니다.
메모리 캐시 vs 디스크 캐시
장단점
- 메모리 캐시
- 장점: 빠른 접근 속도를 제공합니다.
- 단점: 앱이 종료되면 캐시된 데이터가 사라집니다.
- 디스크 캐시
- 장점: 앱이 종료되어도 데이터가 유지됩니다.
- 단점: 메모리 캐시에 비해 접근 속도가 느립니다.
어느 경우에 어떤 것을 사용하는가?
- 메모리 캐시: 빠른 접근이 중요하고, 데이터 크기가 크지 않은 경우에 적합합니다. 예를 들어, UI 요소에 사용되는 이미지들이 여기에 해당될 수 있어요.
- 디스크 캐시: 데이터의 영속성이 중요하거나 크기가 큰 경우에 적합합니다. 예를 들어, 오프라인 모드에서도 접근해야 하는 대용량의 문서나 미디어 파일 등이 이에 속합니다.
캐싱 구현 예시
- URL 확인: 앱이 이미지를 로드해야 할 때, 먼저 해당 이미지의 URL을 확인합니다.
- 캐시 검사: 앱 내부의 캐시 저장소에서 해당 URL을 키로 사용하여 이미지가 캐시되어 있는지 확인합니다.
- 캐시된 이미지가 있는 경우: 이미 저장된 이미지를 직접 사용합니다. 이 경우 추가적인 네트워크 요청은 필요 없으며, 이로 인해 데이터 사용량이 감소하고 로딩 시간이 단축됩니다.
- 캐시된 이미지가 없는 경우: 앱은 해당 URL로 네트워크 요청을 보내 이미지를 가져옵니다.
- 이미지 저장 및 표시: 새로운 이미지를 받아온 경우, 이를 캐시에 저장하고 UI에 표시합니다. 이렇게 하면 같은 이미지를 다시 요청할 때 빠르게 접근할 수 있습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.