缓存类型:

区分文件缓存和内存缓存。
差别在于文件缓存有缓存过期时间,其生命周期依赖于缓存过期时间;内存缓存的生命周期跟 App 生命周期一致。

缓存策略:

  1. 缓存数据和网络请求二选一

    • 加载缓存没有过期,就不发起网络请求;
    • 缓存一旦过期,就发起网络请求;

      使用场景:

    1. 节省网络请求
    2. 过期失效数据无法使用
  2. 缓存数据与网络请求数据顺序加载

    • 无论缓存有没有过期,均发起网络请求;
      使用场景:
    1. 过期失效数据仍有一定使用价值
    2. 每次又想更新内容
  3. 只加载请求网络数据

    • 在不判断缓存的情况下,主动忽略缓存,发起网络请求;
    • 这个策略比较好的满足方式是,在策略二的基础上,比较缓存数据和网络数据是否相同,如果相同即不重复回调。

      使用场景:

    1. 不想重复回调刷新页面

缓存过期时间:

针对缓存策略1(只加载缓存数据)情况,缓存过期时间用于确定缓存是否过期。
对于其他两种缓存策略,过期时间无效。

注意事项

  • 缓存策略很容易和网络策略混在一起
    缓存技术问题又很容易跟产品业务问题混在一起 缓存问题从根本上来看其实是数据源选择的问题

如果认同数据源选择的说法,那么上述三个策略可以概括为:

  1. 同步有依赖的多源数据的选择(数据源的获取是同步的,是否获取下一个数据源依赖于上一个数据源是否返回结果)
  2. 同步无依赖的多源数据的选择(数据源的获取是同步的,是否获取不同数据源没有相互依赖)
  3. 单源选择

那么,目前遇到的问题就可以拆分为两个问题讨论:

  1. 多源选择策略的问题
  2. 单源数据如何保存和获取的问题