图片三级缓存的原理
2015-07-10 11:23
232 查看
三级缓存的概念:
内存-->硬盘-->网络
由内存、硬盘、网络缓存形成。
关于三级缓存用到的技术:
Android高效加载大图、多图解决方案、有效避免程序OOM使用的核心技术就是LruCache。
LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证。
用法和流程:
当每次加载图片的时候都优先去内存加载图片、当内存中获取不到图片的时候则去硬盘缓存读取、如果硬盘缓存读取不到数据就去网络获取数据。不管是从硬盘缓存还是从网络获取,读取到了数据之后都应该添加到内存缓存当中,这样的话我们下次再去读取图片的时候就能迅速从内存当中读取到,而如果该图片从内存中被移除了的话,那就重复再执行一遍上述流程。
内存-->硬盘-->网络
由内存、硬盘、网络缓存形成。
关于三级缓存用到的技术:
Android高效加载大图、多图解决方案、有效避免程序OOM使用的核心技术就是LruCache。
LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证。
用法和流程:
当每次加载图片的时候都优先去内存加载图片、当内存中获取不到图片的时候则去硬盘缓存读取、如果硬盘缓存读取不到数据就去网络获取数据。不管是从硬盘缓存还是从网络获取,读取到了数据之后都应该添加到内存缓存当中,这样的话我们下次再去读取图片的时候就能迅速从内存当中读取到,而如果该图片从内存中被移除了的话,那就重复再执行一遍上述流程。
相关文章推荐
- [leetcode] 234.Palindrome Linked List
- C语言之基本算法24—黄金分割法求方程近似根
- Qt学习之路(17): Qt标准对话框之QMessageBox
- spring配置文件详解--真的蛮详细
- 【bug】CSRF Security Error解决办法
- 一、快速排序
- 二叉树节点的最大距离
- 如何设置/配置 SunPinYin
- 【C#】程序运行时间
- [Unity3D]清理material中无用的的property
- 一分钟理解APM,把流失的用户找回来
- PHP生成文件
- 【动态代理】动态代理Proxy_04
- iOS单例模式
- 如何查看python的版本号
- 安卓端OCR文字识别之番外篇
- Juno: user.behaviors 设置: 0.5版本和0.4以下不同?
- 【数据结构】栈的数组实现
- jQuery 常用插件和UI插件 总结笔记
- 【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树