SwiftUI

[SwiftUI] 데이터 캐싱 기법들에 대하여

예빈 Yebeen 2024. 2. 5. 16:04
728x90
반응형

 

캐싱이란?

캐싱은 데이터를 내부에 미리 저장하고 필요할 때 빠르게 접근하는 기술이다. 이 기술은 반복적인 계산 또는 불필요한 데이터 요청을 줄여 성능을 향상시키는데 도움이 된다.

 


 

캐싱의 장점!

  1. 성능 향상 : 캐싱된 데이터는 디스크나 네트워크에서 불러오는 것보다 훨씬 빠르게 접근할 수 있다. 앱의 응답 시간을 개선하고, 사용자 경험을 향상시킨다.
  2. 네트워크 트래픽 절약 : API 응답을 캐싱하면 동일한 요청을 반복해서 보낼 필요가 없다. 이는 네트워크 대역폭을 절약하고, 데이터 사용량을 줄여준다.
  3. 오프라인 접근 : 캐싱된 데이터는 네트워크 연결이 없어도 접근할 수 있다.이는 오프라인 상태에서도 앱이 작동하도록 해준다.

 

캐싱을 사용하는 도구들.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