<aside>
🙂 현재 프로젝트에 적합한 간단한 이미지 캐시를 구현하여 사용하였습니다.
</aside>

- 기본에 임시로 작업한 이미지 캐시의 경우, 네트워크 요청후 디스크에 저장이 되는 구조로 제작하였습니다.
- 이미지의 경우 상대적으로 용량이 크기 때문에, 이 이미지 자체를 메모리에 올려서 사용하는 것 자체가 낭비라 생각하였습니다.
- 하지만 진정한 의미의 캐시를 조금이라도 구현하려면 메모리 캐시 기능 자체도 사용해야 한다는 생각에 이미지 캐시를 수정하기로 마음 먹었습니다.

- 이미지 캐시를 구현하기 위해서는 사실 많은 부분을 고려해야 합니다. 캐시의 신선도 판단 방법에 따른 정책들이 그 예가 될 수 있습니다.
- 하지만 저희는 당장 저희의 프로젝트에서 사용할 로직이 무엇인가에 보다 집중하였습니다.
- 사용자가 업로드한 이미지가 변경되지 않는 기획 특성상, 캐시의 신선도를 위한 로직 자체를 구현하는 것은 오버엔지니어링이라 판단하였습니다. 그래서 추후 확장하더라도 쉽게 가능하면서 현재의 목적을 달성할 수 있는 apple 프레임 워크를 사용하였습니다.
- 이 때, 애플에서 제공하는 URLCache를 사용하였습니다. 해당 문서를 기반으로 의사 결정 트리에 대해 이해후 적용하였습니다.
- 캐시 정책의 경우 returnCacheDataElseLoad, 즉 캐시가 있으면 반환하고, 그렇지 않을 경우 가져오는 방식을 채택하였습니다.
Apple Developer Documentation

- URLCache를 사용하기 위해서는 요청에 대한 정의, 그리고 그 응답에 대해 캐시에 저장해야 했습니다.
- data Task의 경우, 응답에 대해 자동으로 저장해주지만, download task의 경우 보통 큰 용량의 리소스들을 받기 때문에, 캐시에 등록하는 부분을 수동으로 처리해 주어야 했습니다.
- 따라서 이미지 응답에 대해 요청을 키로, 응답을 값으로 설정하여 캐시에 저장하였습니다.