企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
***** **图片三级缓存概述** [TOC=6] # 1. 为什么要进行三级缓存 **** ![](https://box.kancloud.cn/f46db72826256d57461213693068885c_1585x773.png) 三级缓存策略,最实在的意义就是 减少不必要的流量消耗,增加加载速度 。 如今的 APP 网络交互似乎已经必不可少,通过网络获取图片再正常不过了。但是,每次启动应用都要从网络获取图片,或者是想重复浏览一些图片的时候,每次浏览都需要网络获取,消耗的流量就多了,在如今的流量资费来说,肯定会容易影响用户数量。 还有就是网络加载图片,有时候会加载很慢,影响了用户体验。 另外从开发角度来说,Bitmap 的创建非常消耗时间和内存,可能导致频繁GC。而使用缓存策略,会更加高效地加载 Bitmap,减少卡顿,从而减少读取时间。 而内存缓存的主要作用是防止应用重复将图片数据读取到内存当中,硬盘缓存则是防止应用重复从网络或其他地方重复下载和读取数据。 # 2. 什么是三级缓存? **** 1. 内存缓存,优先加载,速度最快 2. 本地缓存,次优先加载,速度快 3. 网络缓存,最后加载,速度慢,浪费流量 # 3. 三级缓存的原理 **** 1. 首次加载的时候通过网络加载,获取图片,然后保存到内存和 SD 卡中。 2. 之后运行 APP 时,优先访问内存中的图片缓存。 3. 如果内存没有,则加载本地 SD 卡中的图片。 具体的缓存策略可以是这样的:内存作为一级缓存,本地作为二级缓存,网络加载为最后。其中,内存使用 LruCache ,其内部通过 LinkedhashMap 来持有外界缓存对象的强引用;对于本地缓存,使用 DiskLruCache。加载图片的时候,首先使用 LRU 方式进行寻找,找不到指定内容,按照三级缓存的方式,进行本地搜索,还没有就网络加载。