每天我都要刷十几乃至几十遍朋友圈,来获取最新的资讯、八卦、行业大事儿,也顺便看看周围同事都在哪些国家玩耍,哪些同事又后半夜下班打不到车,还有最近周围同事的孩子都成长的怎么样,哈哈。
八卦、装逼、卖萌、邀功,每天在朋友圈里悉数上演。扯远了,我今天主要分析一下朋友圈的图片缓存系统以及介绍一个缓存系统的设计要素。
缓存是什么?
缓是临时的意思,存是存储的意思,所以缓存就是临时存储的意思。什么东西适合临时存储呢?文字、网页、图片、数据?一切都适合临时存储,并且也都适合永久存储,要看业务类型。
以朋友圈为例,你一定离不开这几种场景:
1. 刷了几页之后,然后回到头部,你会发现看过的图片依旧在显示,并没有重新出现占位符,然后再显示出图片,表明这张图片一直在内存中,随时可被使用。
2. 点击一条新内容的图片时,会展示一张小的缩略图,然后 loading 一直在转,过了一会儿一张清晰无码大图展现出来,表明这张图片是从网络拉取回来的,随后再被使用。loading 的过程中,只存在一张小的缩略图。
3. 当你翻到几天前的内容,打开图片的时候,有的时候跟 2 一样,从网络拉取,有的时候,瞬间打开,这是为啥呢?因为有可能还在缓存系统中,瞬间被使用。也有可能被淘汰删除掉了,所以从网络重新拉取。这几种情况基本涵盖了一个 App 或者其他应用程序所使用缓存系统的所有场景,只不过这个举例以图片为主,其他原理类似。
缓存系统经常分为两级,称为一级缓存,二级缓存。一级缓存也叫内存缓存,二级缓存也叫硬盘缓存(手机App 中,在Sd 卡上)。很显然,一级缓存存取速度更快,程序退出数据就消失,不可一直保留,且多占了一些内存,容易被