如何设计一个图片缓存框架?
屏幕快照 2018-11-22 下午6.09.07.png
方案:
首先一个manager 管理者 : 内存管理 磁盘管理 网络
codeManager(解码相关) : 图片解码, 图片压缩/解压缩
图片通过什么方式进行读写,过程怎样的?
图片可以用URL的单向hash值 作为Key
图片读取流程:
屏幕快照 2018-11-22 下午6.12.01.png
为何用内存
借鉴系统多级缓存思想,每次下载或磁盘会耗时和节省流量上的损耗
*内存设计上需要考虑哪些问题??
存储size
淘汰策略
存储size改如何设计
10kb以下开辟50个控件缓存
10 -100kb 缓存20张
大于100kb 缓存10张
以队列先进先出方式
存储size
淘汰策略
以队列先进先出方式淘汰策略
屏幕快照 2018-11-22 下午6.17.13.png
LRU算法 (如30分钟内是否使用)
定时检查 ( low )
提高检查触发频率(每次进行读写时检查、前后台切换时)
LRU算法
磁盘设计需要考虑哪些问题?
存储方式
大小限制
淘汰策略
磁盘设计
网络设计需要考虑哪些问题?
图片请求最大并发量
请求超时策略
请求优先级
图片解码采用什么方式?
应用策略模式对不同图片格式进行解码
在哪个阶段进行图片解码??
磁盘读取后
网络请求返回后
线程处理
图片加载流程