移动应用开发(IOS/android等)中一个通用的图片缓存方案讲解(附流程图)-阿里云开发者社区

开发者社区> 管振纬> 正文

移动应用开发(IOS/android等)中一个通用的图片缓存方案讲解(附流程图)

简介: 在移动应用开发中,我们经常会遇到从网络请求图片到设备上展示的场景。 如果每次都重复发起请求,浪费流量、浪费电量,用户体验也不佳; 将图片持久化到磁盘也不失为一种策略;但每次从文件读取图片也存在一定的io开销,就算采用此策略,我们也需要控制磁盘缓存的容量,以免占用过多系统资源。
+关注继续查看

在移动应用开发中,我们经常会遇到从网络请求图片到设备上展示的场景。

如果每次都重复发起请求,浪费流量、浪费电量,用户体验也不佳;

将图片持久化到磁盘也不失为一种策略;但每次从文件读取图片也存在一定的io开销,就算采用此策略,我们也需要控制磁盘缓存的容量,以免占用过多系统资源。

其实没有一个方案可以说是完美的方案,只有最适合自己业务需求的方案,才可以说是一个好方案


我们下面所讲解的方案具备很强的通用性,设计思路简单而清晰:

1.假设每个网络图片的url具有唯一性,如果网络上的图片变化了,会引起输入源的url变化;

2.基于1,我们将url作为图片缓存的唯一标识(可以做hash,做md5,也可以用urlstring作为key,都是可以的)

3.访问优先级:内存缓存>磁盘缓存>网络资源


以上3点就是我们这个方案的基本策略,以下是技术细节

1.对于缓存的管理,我们可以设置阀值(包括缓存存在时间和缓存容量),达到条件触发清理;还可以结合LRU(Least Recently Used 近期最少使用算法)算法来提升缓存访问效率,这需要在写缓存时对缓存的使用次数进行相应标记,此处对此算法不展开,有兴趣的自行google.

2.对于网络资源的加载我们必须采用异步的方案,如此做才不会阻塞ui的展示;可以将请求加到队列中支持并发请求,需要注意的是我们可以根据某个地址可以支持同时连接的url数量来设置最大并发请求数目,来提高效率。

3.在访问磁盘缓存/网络资源成功时,需要填充高优先级的缓存,当磁盘缓存访问成功时,填充内存缓存;当网络资源访问成功时,填充内存缓存+磁盘缓存。


对于具体的使用场合我们可以根据业务需要来决定是否采纳或部分采纳此方案,也可以对此方案中的一些策略根据项目需要进行修改(比如何时不访问磁盘缓存、何时清空缓存、何时强制刷新缓存等),来满足业务需求。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java建造者模式
在现实生活中如果我们需要制造一个比较复杂的东西,比如手机,台式电脑,或者汽车等。如果我们要制造一台电脑的话我们会先将电脑所需的各个部件买回来然后在组装起来成为一台电脑。这里电脑所需的各个组件比如显示器,CPU,硬盘等等都是由不同的厂商生产的,然后被我们不同的组合而成了不同的产品。这是现实生活中和建造者模式类似的场景,而在程序中也一样有些情况下我们需要创建比较复杂的对象,在这种场景下我们可以通过建造者模式来实现,
3 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(计数排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(计数排序)
5 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(桶排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(桶排序)
1 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(插入排序-简单插入排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(插入排序-简单插入排序)
3 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(选择排序-堆排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(选择排序-堆排序)
3 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(排序算法介绍)
【愚公系列】2021年11月 C#版 数据结构与算法解析(排序算法介绍)
4 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(归并排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(归并排序)
4 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(交换排序-快速排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(交换排序-快速排序)
3 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(插入排序-希尔排序)
【愚公系列】2021年11月 C#版 数据结构与算法解析(插入排序-希尔排序)
3 0
互动直播还有多远?从三大技术难题说起
2个月前,我在某直播平台上看了一场游戏直播,那叫一个难受,连延迟带卡顿,看到后半场卡的我直上厕所,回来后发现画面虽变了但仍旧卡,一气之下果断的关了直播。上个月去上海参加华为手机的发布会,想在现场做一下直播,移动4G竟然连信号都没有,只能退回到3G网络在朋友群发一些图片。面对移动网络的问题,只能是沉默再沉默了。
3 0
+关注
管振纬
资深移动开发者
300
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载