iOS开发进阶- 图片缓存框架

课程: 新浪微博资深大牛全方位剖析 iOS 高级面试

一、框架&架构

模块化
分层
解耦
降低代码重合度

二、图片缓存框架

怎样设计一个图片缓存框架?

2.1 图片读写

图片通过什么方式进行读写,过程怎样的?

  • 以图片URL的单向Hash值作为Key
读取流程

2.2 内存设计

内存的设计上需要考虑哪些问题

  • 存储的空间大小Size,根据图片的大小分为不同的存储区域,例如:使用频率高占空间小的会保存的张数多,占内存大的图片保存的张数少。
  • 淘汰策略,第一种队列先进先出的方式淘汰。第二种LRU算法(最近最久未使用算法),在固定时长内是否使用过,未使用则淘汰。需要注意时间/空间开销问题。提高检查触发频率检测。

2.3 磁盘设计

磁盘设计需要考虑哪些问题?

  • 存储方式选择
  • 大小限制
  • 淘汰策略

2.4 网络部分的设计

网络部分的设计需要考虑哪些问题?

  • 图片请求最大并发量
  • 请求超时策略,例如:请求失败时,重新请求。
  • 请求优先级,是否是用户当前紧急使用的图片。

2.5 图片解码

对于不同格式的图片,解码采用什么方式?

  • 应用策略模式对不同图片格式进行解码

在哪个阶段做图片解码处理?

磁盘读取后或者网络请求后。

小结

本节梳理图片缓存库设计的流程和需要考虑的关键点。深入学习可以查看SDWebImage或者YYKit中关于图片换存库的设计。另外找了几篇缓存库相关的优秀博文

推荐阅读更多精彩内容

  • 文/春风柳上归 八百里秦川西起宝鸡峡,东至潼关。即渭河大平原。 八百里秦川尘土飞扬,三千万秦人齐吼秦腔,端一碗髯面...
    春风柳上归阅读 82评论 8 5
  • “丫头,我在等你,你还在单身吗?” 叶欣又梦见余成了,当她哭着醒来,醒来想要捉住这梦的尾巴的时候。梦却早不知道飞到...
    独立行走的鱼阅读 458评论 4 9