swift

ImageCache

motosw3600 2022. 1. 18. 13:18

ImageCache

이미지 캐시로 이미지를 받아오는 로직은 총 3가지로 분류된다.

  1. 메모리 캐시
  2. 디스크 캐시
  3. URL 요청

1. 메모리 캐시

  • NSCache사용
  • Key-Value쌍으로 이루어진 Generic Type의 클래스
  • 메모리 영역 일부를 Caching으로 사용
  • 단점: 앱이 종료되면 메모리에서 리소스가 해제되어 memory caching된 리소스 사라짐
  • 캐시가 보유하는 최대 object수를 관리하는 countLimit설정 가능
  • 캐시가 object제거를 시작하기 전에 보유할 수 있는 최대 총 비용을 설정하는 totalCostLimit설정 가능

2. 디스크 캐시

  • FileManager사용
  • 데이터를 파일형태로 디스크에 저장
  • .cachesDirectory에 저장(Data Container/Libraray/Caches/..)
  • 앱이 종료되도 사라지지 않는다
  • (주의) 반복적으로 발생하면 용량이 커질 수 있음

3. URL 요청

  • URLSession을 통해 네트워크 이미지 요청
  • 이미지는 용량이 크기때문에 downloadTask 사용

ImageCacheManager 구현 코드

'swift' 카테고리의 다른 글

Carousel Effect  (0) 2022.01.22
Image Optimizing  (0) 2022.01.18
struct, class, enum  (0) 2021.12.14
URLSession  (0) 2021.12.10
Method Swizzling  (0) 2021.12.10