PPNetworkHelper 缓存问题

482 阅读2分钟

PPNetworkHelper 有自动缓存策略

        //加载缓存数据
    } success:^(id responseObject) {
        //请求成功
    } failure:^(NSError *error) {
        //请求失败
}];

据作者所说:

对于分页数据的缓存,其实自动缓存已经默认做了处理,使用请求的URL与parameters作为缓存的key,以保证key值的唯一性,但不太完美(若parameters中存在有类似于时间的随机变量, 就会导致下次取不出来对应的缓存).如果你是手动实现的上拉/下拉刷新缓存逻辑, 建议你以"请求的URL与parameters作为缓存的key"为关键点, 忽略掉parameters中产生干扰的参数(如时间参数), 这样就能比较好的处理上拉/下拉刷新的缓存了@feistar

所以分页也是根据不同key做了缓存,然后使用就是在各自网路请求策略里使用就可以了

例如:

在请求之前先查询是否有缓存,有则先根据缓存显示数据,然后请求了后再刷新页面(当然如果如你的数据比较死不会变动,可以不去请求)。因为json缓存都比较小,所以每次都会请求,而图片那些大内容需要配合其他工具例如sdwebimage处理。

作者关于缓存更新方案问题 #39的回复

1.关于用户流量的问题: 这里面缓存的是普通的json数据, 并不会消耗用户太多的流量, 1MB的流量就可以请求N多条json数据了. 耗流量的大户是图片, 这个交给SDWebImage或其他图片异步下载缓存框架就行了,不用担心

2.关于判断数据更新/过期的, 好像HTTP请求响应头有一个通用的状态码(是203,还是303的,忘记了,可百度/谷歌看看),用于判断服务器数据是否有更新。但是因为每个项目的需求不一样, 后端的规范也不一样(很有可能后端会自己制定数据是否有更新的标识), 所以自己根据项目需求来制定缓存的策略才最为准确 (PPNetworkHelper也提供了 "无缓存请求+手动缓存" 来制定属于自己项目的缓存策略).