Swift | KingFisher(feat. 이미지 캐싱)
⎮ 이미지 캐싱
이미지 캐싱은 간단히 말하자면,
한번 불러온 이미지를 다시 다운로드하지 않고, 기억해 뒀다가 재사용하는 것이다.
이미지 캐싱은 Swift에서 중요하다고들 말하는데
왜 중요한걸까?
서버로부터 이미지를 가져올 때는 응답받기까지 시간이 걸린다
만약 동일한 이미지를 다시 보여줄때마다 다운로드 받는다면,
유저 눈에는 앱이 버벅거리는 것처럼 보인다.
만약 우주 사진 등과 같은 고용량(1장에 100MB) 이미지라면,
다운로드 받을 때마다 사용자의 데이터를 낭비하게 하는 괴짜 앱이 되어버린다.
또한 네트워크 작업은 배터리 소모에도 영향을 주기 때문에,
계속 중복되는 네트워크 작업을 하면 효율이 좋은 앱이라 할 수 없을 것이다.
⎮ KingFisher
Swift에서 사용할 수 있는 이미지 캐싱 관련 라이브러리는 KingFisher가 있다
https://github.com/onevcat/Kingfisher
GitHub - onevcat/Kingfisher: A lightweight, pure-Swift library for downloading and caching images from the web.
A lightweight, pure-Swift library for downloading and caching images from the web. - onevcat/Kingfisher
github.com
KingFisher는 SPM을 통해 간단하게 추가할 수 있다.
다음과 같이 KingFisher 라이브러리를 추가한 뒤,
Kingfisher를 import하고 사용하면 된다.
import Kingfisher
let url = URL(string: "https://example.com/image.jpg")
imageView.kf.setImage(with: url)
이미지 로딩 중 placeholder를 보여줄 수도 있다.
imageView.kf.setImage(
with: url,
placeholder: UIImage(named: "placeholder")
)
로딩 완료 후 fade-in 애니메이션도 적용할 수 있으니, 이미지 관련 작업을 할 때 유용하게 사용해보도록 하자.
⎮ KingFisher 적용 전, 후 차이
Swift에서 사용할 수 있는 이미지