일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- RxSwift
- 프로토콜
- 세종대학교
- uikit
- 구름톤 유니브
- 네트워크
- ios
- mvc
- snkit
- swift
- 기초문법
- 라이브러리
- 토이프로젝트
- Kingfisher
- 이론
- collectionview
- 학과별커뮤니티
- 반응형
- 스트럭트
- CS
- 동시성
- 대표
- 캐시
- observable
- 실습
- WeatherKit
- struct
- SwiftUI
- async
- 옵셔널
- Today
- Total
스윞한 개발자
SNKit #1: iOS 이미지 캐싱 라이브러리 기획 본문
안녕하세요!
이번 출시 프로젝트를 시작하기 전 기획 단계에서 캐시 라이브러리를 직접 개발해 보면 어떨까..라는 저의 큰 꿈을 품고..!!
라이브러리를 기획해 보고 배포해 보기로 마음 먹었습니다..!!
처음 배포해 보는 일이기 때문에 어려운 일이 많겠지만.. 잘(?) 한 번 배포해 보겠습니다!

이제부터 이미지 캐싱 라이브러리 SNKit(스윞남킷ㅎㅎ)에 대한 시리즈를 시작하려고 합니다. 이 시리즈에서는 이미지 캐싱 라이브러리를 왜 만들게 되었는지, 어떤 아키텍처로 설계했는지, 그리고 각 모듈의 역할과 구현 방법에 대해 상세히 다룰 예정입니다.
SNKit 개발 배경
앱을 개발하다 보면 이미지 로딩과 관련된 문제가 자주 발생합니다. 특히 제가 만들었던 애니메이션, 영화 어플 포스터 등 많은 이미지를 다루는 앱에서는 이미지 로딩 성능이 사용자 경험에 큰 영향을 미칩니다. 기존 라이브러리들(Kingfisher 등)이 있지만, 다음과 같은 이유로 새로운 라이브러리를 개발하게 되었습니다:
- 학습: 이미지 캐싱 메커니즘을 직접 구현해 봄으로써 내부 동작 원리를 깊게 이해하고 싶었습니다.
- 커스터마이징: 세밀하게 조정할 수 있는 자체 솔루션이 필요했습니다.
- ETag 기반 검증: 기존 라이브러리에서는 ETag 기반의 검증 시스템이 부족하다고 느꼈습니다. -> 이제 최신 버전에는 ETag가 지원된다고 하긴 하는데..! 한번 해보겠습니다 ㅎㅎ
SNKit은 효율적인 이미지 캐싱과 다운로드를 위한 Swift 라이브러리로 기획했습니다!!
메모리와 디스크를 모두 활용한 하이브리드 캐싱 시스템과 다양한 캐싱 전략을 제공하면서도, 사용이 간편한 API가 될 예정입니다 ㅎㅎ
간략하게 SNKit의 주요 기능을 말씀드리겠습니다.
SNKit의 주요 기능
SNKit은 다음과 같은 주요 기능을 제공합니다:
1. 하이브리드 캐싱 시스템
메모리와 디스크를 모두 활용하는 하이브리드 캐싱 시스템을 구현했습니다. 메모리 캐시는 빠른 접근 속도를 제공하고, 디스크 캐시는 앱이 종료된 후에도 데이터를 유지할 수 있습니다.
2. ETag 기반 검증
HTTP ETag 헤더를 활용하여 서버의 이미지가 변경되었는지 효율적으로 확인할 수 있습니다. 이미지가 변경되지 않았다면 불필요한 다운로드를 방지합니다.
3. 다양한 캐싱 전략
상황에 맞게 선택할 수 있는 다양한 캐싱 전략을 제공합니다:
1. 캐시 우선
2. ETag 검증
3. 캐시 없이 강제 다운로드!
4. 이미지 처리 기능
다른 오픈소스에서도 제공하는 이미지 리사이징, 다운샘플링 등의 처리 옵션을 제공할 예정입니다!
5. 만료 정책 설정
캐시 된 이미지의 만료 시점을 다양하게 설정할 수 있습니다:
Kingfisher에서 설정한 만료정책과 비슷하게 갈 것 같습니다. 디스크는 기본 7일! 특정날짜와 시간 등을 받을 수 있게 할 계획입니다.
이제 개발을 시작하고! 차근차근 블로그에 글을 적어보도록 하겠습니다!
긴 글 읽어주셔서 감사합니다!!

'프로젝트' 카테고리의 다른 글
SNKit #3: 디스크/하이브리드 캐시의 구현 (0) | 2025.03.31 |
---|---|
SNKit #2: 메모리 캐시의 구현 (0) | 2025.03.25 |
그래빗 : 성공적인 투자 GraBit과 함께! (0) | 2024.04.08 |
수달 : 집수리 달인 (0) | 2024.03.10 |
IOS - 앱스토어 배포/에러 해결/WeatherKit (5) | 2024.03.07 |