SDWeb(图片缓存架构设计)
优化
减少任务量
- 缓存后则无需
转移任务量
- 更多的去子线程操作
- 自己的任务做了什么
- 底层的系统做了什么
怎么取消一个未加载完成的图片
同时加载一个图片的时候,怎么去重
加载流程
第一次加载
-
网络操作(下载)
-
保存本地
- 加载图片
-
第二次加载
- 取本地
bitmap
- 一种位图的格式,线程里边进行操作
类构成
Manager(管理者)
-
多级缓存策略
-
内存
-
磁盘
-
网络下载
- 耗时
- 流量损耗
-
查找流程
-
查找开始
-
内存是否命中
-
YES
-
NO
-
磁盘是否命中
-
YES
-
NO
-
网络下载
- 结束
-
-
-
-
-
注意点
图片通过什么方式进行读写?
- 以图片的URL作为Key
- 把图片的URL进行MD5后加密(安全)
- 把图片URL单向HASH值作为KEY(类似2)
计算机组成原理组成部分借鉴
- 多级缓存(提高查找效率)
- 淘汰算法(合理管理空间)
架构设计
内存设计
-
存储Size
- 小图N张
- 中图N张
- 大图N张
-
淘汰策略
-
队列形式
-
LRU
-
方式
-
检查触发时机/频率
- 每次读写时候
- 前后台切换时候
-
定时检查
-
-
缺点
- 空间
- 时间
-
-
磁盘设计
-
特性
- 空间大
- 读取效率低
-
设计
- 存储方式
- 大小限制
- 淘汰策略
网络设计
- 图片请求最大并发量
- 请求超时策略(重试一次)
- 请求优先级(任务)
图片解码
- 磁盘读取后
- 网络请求返回后
- 解码的时机(要显示为前提)
- 不同格式的图片采用策略模式,提高框架的稳定性
XMind - Trial Version