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

作者: 繁华落尽丶lee | 来源:发表于2018-09-11 09:44 被阅读51次

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

    一、框架&架构

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

    二、图片缓存框架

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

    2.1 图片读写

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

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

    2.2 内存设计

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

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

    2.3 磁盘设计

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

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

    2.4 网络部分的设计

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

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

    2.5 图片解码

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

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

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

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

    小结

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

    相关文章

      网友评论

        本文标题:iOS开发进阶- 图片缓存框架

        本文链接:https://www.haomeiwen.com/subject/nyjygftx.html