Apple is Apple

일일 회고

 

바쁘다 바빠 


오늘의 키워드

  • 트러블 슈팅

원인

공공 데이터 api에서 가져온 image url의 로딩 속도가 너무 느림

실험 - LTE 기준 약 4분

+추가 - 다른 이미지도 로딩 속도가 낮에 비해 굉장히 느려졌음 (작성 시각 오전 12:30)

인터넷 문제였던 것으로 판단, 하지만 그래도 사용자 관점에서 보았을 떄,이미지가 로딩 되는 속도가 느렸음

해결 과정

캐싱이란?

캐싱은 파일 사본을 캐시 혹은 임시 저장소에 저장해서, 보다 빠르게 접근할 수 있도록 하는 하나의 프로세스

파일 또는 데이터 사본을 임시 저장하는 위치를 범용적으로 캐시라고 부름

사용하고 있는 이미지 라이브러리인 Coil의 Caching을 적용

class App : Application() {
    override fun onCreate() {
        imageLoader = ImageLoader.Builder(baseContext)
            .memoryCache {
                MemoryCache.Builder(baseContext)
                    .maxSizePercent(0.25)
                    .build()
            }
            .diskCache {
                DiskCache.Builder()
                    .directory(baseContext.cacheDir.resolve("image_cache"))
                    .maxSizePercent(0.02)
                    .build()
            }
            .build()
        super.onCreate()
    }

    companion object {
        lateinit var imageLoader: ImageLoader
    }
}

itemMainImageView.load(model.imageUrl, App.imageLoader) {
      memoryCachePolicy(CachePolicy.ENABLED)
      diskCachePolicy(CachePolicy.ENABLED)
}

앱 전역에서 이미지를 사용하기 떄문에 Application()단에서 이미지 캐싱 빌더가 포함된 ImageLoader를 만들어준다.

이 ImageLoader를 캐싱이 필요한 ImageView에 넣어줌으로써 이미지 캐싱을 해 볼 수 있다.

 

 

참고자료

 

 

Image Loaders - Coil

Image Loaders ImageLoaders are service objects that execute ImageRequests. They handle caching, data fetching, image decoding, request management, bitmap pooling, memory management, and more. New instances can be created and configured using a builder: val

coil-kt.github.io

 

 

[Android] 메모리 캐시와 디스크 캐시

브라우저에서의 메모리/디스크 캐시메모리 캐시 vs 디스크 캐시 :: 마이구미 (정리잘되어있음) 아래는 해당 링크의 요약본이다. 브라우저 측면이 아닌 하드웨어 측면에서 보면, 관련설명 잘 되어

dl137584.github.io

 

profile

Apple is Apple

@mjjjjjj