缓存机制
缓存机制
“缓存”这个词在web时代也经常听到,但在移动产品上,他的重要性得到了很好的重视
一张图解释什么是缓存和缓存的作用
“缓存”就是把已经加载过的数据保存起来,并在下次需要重复使用的时候,不需要向服务器加载,直接获取本地数据

我理解的“缓存”可如下分类

临时缓存常用于一个功能页面内,保存各栏目的缓存。同一个功能里会把子功能分为多个栏目进行划分,每个标签栏目下的内容在本次使用中都可保存为临时 缓存,在该功能里切换栏目,不需要重新加载数据,使用缓存显示。对于用户来说,使用时达到了无缝切换浏览,对于服务器来说,在短时间内数据很少会有更新, 所以在一般情况下能满足用户的正常需求,并达到体验优秀。
临时缓存的清理机制是:退出该功能模块就清除之前的缓存。也就是说下次进入该功能模块,需要重新获取一次数据。

很多时候我们都会用到临时缓存,因为那些信息真的不是那么重要,而且不需要经常反复查看,那对于那些我们经常使用而且经常需要反复查看的信息,我们就会采取固定缓存保存在本地,方便下次翻阅时不需要再一次向服务器请求数据了。
其中又会细分为可手动清理的缓存,和不可手动清理的缓存。第一种是我们最常见的缓存,几乎所有产品都采用这种缓存方式。平时用户浏览文章、图集加载的数据就以这种形式缓存在本地,下次看回这篇文章、图集时就不需要加载了。用户也可以手动把这些缓存清理了,释放空间。

而对于某些特殊场景,例如一些相对固定的数据,我们不愿意一开始就打包进App里,这样会占太大容量,造成产品包很大,也不愿意每次进入页面都向服务器加载这些信息,那怎么办?解决方法就是我们可以只加载一次就永远存在本地了,这样安装包也不会大,以后也不用加载了。
例如一些页面的背景图,相对固定不常更换,所以在用户首次进入该页面时就加载背景图并保存在本地,这种缓存是不可清理的,下次再进入该页面就读取本地缓存显示即可。

这种缓存方案使用得很少,因为场景太少,具体使用场景还有待开发。
对于这些保存在本地的缓存,都是会占空间的,手机的容量是有限的,那产品是通过怎样的方式清理缓存的呢?
大家熟知的有手动清理,一般App都会在“设置”里提供一个清理缓存的功能,一键把空间释放。除此之外,App最好要设计自动清理机制。可以通过两个维度来设计这个机制。
时间
通过设定一个固定的时间,或者根据用户使用周期灵活设定时间来清理缓存。每个产品的场景不一,用户使用频率不一,设定这个机制的时候就需要结合实际情况考虑了。
容量
一般是设定一个容量上限,采用堆栈的设计原理进行缓存清理,溢出堆栈的旧数据将自动清除。
/