boostcampwm-2022 / iOS09-burstcamp

iOS 얼죽아 burstcamp 입니다 ^^
31 stars 4 forks source link

[기능] 이미지 캐시 #31

Closed guesswb closed 2 years ago

guesswb commented 2 years ago

할 일

NEULiee commented 2 years ago

https://1consumption.github.io/posts/about-kingfisher(1)/

캐시(cache)는 [컴퓨터 과학](https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

출처: 위키백과 - 캐시

  1. url.absoluteString을 key로 캐싱 된 이미지가 있는지 확인합니다.
  2. 만약 cache(memory나 disk)에서 이미지를 찾으면 imageView.image에 설정해줍니다.
  3. 그렇지 않다면, request를 생성하고 url로 부터 다운로드합니다.
  4. 다운로드된 데이터를 UIImage 객체로 변환합니다.
  5. memory cache에 이미지를 cache하고 disk cache에 데이터를 저장합니다.
  6. 이미지를 표시하기 위해 imageView.image를 설정하세요.

NSCache

https://developer.apple.com/documentation/foundation/nscache

이미지 캐싱 블로그

https://jeonyeohun.tistory.com/311

킹피셔

https://github.com/onevcat/Kingfisher

이미지캐싱할때 디스크캐시는 FileManager를 이용한다.

UserDefaults에 캐싱해두면 안되나? → 프로필 이미지처럼 자주 바뀌지 않는 것들, Thread safe

[[iOS - swift] TableView 캐시를 이용한 효율적인 이미지 로딩 방법 (async, cache)](https://ios-development.tistory.com/659)

ETag

[[Swift] Image Cache처리 (NSCache, FileManager)](https://nsios.tistory.com/58)

캐시를 저장했는데 서버에서 이미지가 바뀌어버리면?

etag를 비교해서 바꼈으면 캐시 변경

그럼 결국 캐시에 접근하려면 etag가 변경되었는지 서버 요청을 꼭 날려야하는거

서버요청을 계속날리면 어차피 다 똑같아 지는거아닌ㅇ가..

[HTTP 조건부 요청 - HTTP | MDN](https://developer.mozilla.org/ko/docs/Web/HTTP/Conditional_requests)

[HTTP 헤더 - 캐시와 조건부 요청](https://velog.io/@dnstlr2933/HTTP-%ED%97%A4%EB%8D%94%EC%BA%90%EC%8B%9C%EC%99%80-%EC%A1%B0%EA%B1%B4%EB%B6%80-%EC%9A%94%EC%B2%AD)

• 결과적으로 네트워크 다운로드가 매우 적은 용량 헤더 정보만 발생하게 되고 속도도 빨라지게 된다

NEULiee commented 2 years ago

할일

NEULiee commented 2 years ago
image