-
[SwiftUI] 데이터 캐싱 기법들에 대하여SwiftUI 2024. 2. 5. 16:04728x90반응형
캐싱이란?
캐싱은 데이터를 내부에 미리 저장하고 필요할 때 빠르게 접근하는 기술이다. 이 기술은 반복적인 계산 또는 불필요한 데이터 요청을 줄여 성능을 향상시키는데 도움이 된다.
캐싱의 장점!
- 성능 향상 : 캐싱된 데이터는 디스크나 네트워크에서 불러오는 것보다 훨씬 빠르게 접근할 수 있다. 앱의 응답 시간을 개선하고, 사용자 경험을 향상시킨다.
- 네트워크 트래픽 절약 : API 응답을 캐싱하면 동일한 요청을 반복해서 보낼 필요가 없다. 이는 네트워크 대역폭을 절약하고, 데이터 사용량을 줄여준다.
- 오프라인 접근 : 캐싱된 데이터는 네트워크 연결이 없어도 접근할 수 있다.이는 오프라인 상태에서도 앱이 작동하도록 해준다.
캐싱을 사용하는 도구들.zip
UserDefaults
사용자의 설정값이나 간단한 정보를 저장하고 불러올 때 사용한다.
let defaults = UserDefaults.standard defaults.set(25, forKey: "Age") let age = defaults.integer(forKey: "Age")
Core Data
앱의 복잡한 데이터 모델을 저장하고 관리한다.
let appDelegate = UIApplication.shared.delegate as! AppDelegate let context = appDelegate.persistentContainer.viewContext let entity = NSEntityDescription.entity(forEntityName: "Person", in: context) let newPerson = NSManagedObject(entity: entity!, insertInto: context) newPerson.setValue("John", forKey: "name") do { try context.save() } catch { print("Failed saving") }
URLCache
URL 세션을 통해 수행되는 네트워크 요청의 응답을 캐싱한다.
let urlRequest = URLRequest(url: URL(string: "http://example.com")!) let data = try? Data(contentsOf: urlRequest.url!) URLCache.shared.storeCachedResponse(CachedURLResponse(response: urlRequest, data: data!), for: urlRequest)
NSCache
임의의 키-값 쌍을 메모리에 캐싱한다.
let cache = NSCache<NSString, UIImage>() let image = UIImage(named: "example")! cache.setObject(image, forKey: "example")
Disk Storage
앱의 데이터를 디스크에 직접 저장하는 것도 하나의 방법이다.
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String let url = URL(fileURLWithPath: path).appendingPathComponent("example") let data = "example data".data(using: .utf8)! try? data.write(to: url)
기본적인 사용 방법들에 대해서 알아본 후, 직접 프로젝트에 반영한 후기와 구체적인 사용 방법에 대해서는 추후 업로드하기로!!
오늘의 코드 레시피👩🏻🍳 완료!🩷
728x90'SwiftUI' 카테고리의 다른 글
[SwiftUI] GroupBox 사용해보기 (0) 2024.03.06 [SwiftUI] Form 사용해보기 (0) 2024.03.05 [SwiftUI] TabView 사용해보기 (0) 2024.02.01 [SwiftUI] NavigationView와 NavigationStack 사용해보기 (0) 2024.01.26 [SwiftUI] ScrollView 사용해보기 (0) 2024.01.25