缓存类型:
区分文件缓存和内存缓存。 差别在于文件缓存有缓存过期时间,其生命周期依赖于缓存过期时间;内存缓存的生命周期跟 App 生命周期一致。
缓存策略:
缓存数据和网络请求二选一
- 加载缓存没有过期,就不发起网络请求;
- 缓存一旦过期,就发起网络请求;
使用场景:
- 节省网络请求
- 过期失效数据无法使用
缓存数据与网络请求数据顺序加载
- 无论缓存有没有过期,均发起网络请求; 使用场景:
- 过期失效数据仍有一定使用价值
- 每次又想更新内容
只加载请求网络数据
- 在不判断缓存的情况下,主动忽略缓存,发起网络请求;
- 这个策略比较好的满足方式是,在策略二的基础上,比较缓存数据和网络数据是否相同,如果相同即不重复回调。
使用场景:
- 不想重复回调刷新页面
缓存过期时间:
针对缓存策略1(只加载缓存数据)情况,缓存过期时间用于确定缓存是否过期。 对于其他两种缓存策略,过期时间无效。
注意事项
- 缓存策略很容易和网络策略混在一起 _ 缓存技术问题又很容易跟产品业务问题混在一起 _ 缓存问题从根本上来看其实是数据源选择的问题
如果认同数据源选择的说法,那么上述三个策略可以概括为:
- 同步有依赖的多源数据的选择(数据源的获取是同步的,是否获取下一个数据源依赖于上一个数据源是否返回结果)
- 同步无依赖的多源数据的选择(数据源的获取是同步的,是否获取不同数据源没有相互依赖)
- 单源选择
那么,目前遇到的问题就可以拆分为两个问题讨论:
- 多源选择策略的问题
- 单源数据如何保存和获取的问题