Skip to content

E-Tag기반으로 이미지를 캐싱할 수 있습니다.

License

Notifications You must be signed in to change notification settings

Monsteel/CachedImageLoader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CachedImageLoader

E-Tag기반으로 이미지를 캐싱할 수 있습니다.

There is also an explanation in English.

💁🏻‍♂️ 순수한 Swift를 사용하여 구현되었습니다.
💁🏻‍♂️ E-Tag를 기반으로 하여 이미지를 캐싱합니다.
💁🏻‍♂️ UI의존성 없이 캐싱된 이미지를 가져올 수 있습니다.

장점

✅ E-Tag를 Base로 캐싱되어 URL은 그대로이지만 이미지가 변경된 경우 새로운 이미지로 업데이트 합니다.
✅ UI와 의존성이 없어, SwiftUI, UIKit 모두에서 자유롭게 사용할 수 있습니다.
✅ 메모리 캐싱은 기본적으로 제공되며, 디스크 캐싱은 필요에 따라 On/Off할 수 있습니다.

사용방법

간단한 코드로, 캐싱된 이미지를 불러올 수 있습니다.

import SwiftUI
import CachedImageLoader

public struct DummyView: View {
  private let imageLoader = CachedImageLoader.shared
  @State var image: UIImage? = nil

  public var body: some View {
    Image(uiImage: image)
      .task {
        guard let data = try? await imageLoader.load(urls.randomElement()) else { return }
        self.image = UIImage(data: data)
      }
  }
}

간단한 코드로, 캐싱된 데이터를 제거할 수 있습니다.

import SwiftUI
import CachedImageLoader

public struct DummyView: View {
  private let imageLoader = CachedImageLoader.shared

  public var body: some View {
    // State를 Binding합니다.
    Button("clear Cache") {
      Task {
        await imageLoader.clearCache()
      }
    }
  }
}

SwiftUI를 위해 구현된 CachedAsyncImage 를 사용할 수 있습니다.

import SwiftUI
import CachedAsyncImage

struct SampleView: View {
  let url: URL
  var body: some View {
    CachedAsyncImage(url: url, imageLoader: .shared) { image in
      image
        .resizable()
        .scaledToFit()
        .frame(width: 100)
    } placeholder: {
      ProgressView()
    }
  }
}

Swift Package Manager(SPM) 을 통해 사용할 수 있어요

dependencies: [
  .package(url: "https://github.com/Monsteel/CachedImageLoader.git", .upToNextMajor(from: "0.0.1"))
]

사용하고 있는 곳.

회사 설명
SwiftUI와 UIKit을 사용하여 개발된 정육각 커머스 앱에서 이미지 로딩을 위해 사용하고 있습니다.
SwiftUI를 사용하여 개발된 초록마을 커머스 앱에서 이미지 로딩을 위해 사용하고 있습니다.

함께 만들어 나가요

개선의 여지가 있는 모든 것들에 대해 열려있습니다.
PullRequest를 통해 기여해주세요. 🙏

License

CachedImageLoader 는 MIT 라이선스로 이용할 수 있습니다. 자세한 내용은 라이선스 파일을 참조해 주세요.
CachedImageLoader is available under the MIT license. See the LICENSE file for more info.

Auther

이영은(Tony) | [email protected]

Hits

About

E-Tag기반으로 이미지를 캐싱할 수 있습니다.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages