Closed lishangjing-spec closed 6 months ago
ZBRequestTypeCache 在有缓存下,会一直读缓存。你在合适的时候需要调用ZBRequestTypeRefreshAndCache,比如下拉刷新 更新缓存 @lishangjing-spec
好的,感谢回复,我开始以为是读取缓存,并进行请求覆盖缓存
@Suzhibin 您好,是否有快捷的方式,在获取缓存之后,异步立马进行缓存更新,用于下次启动时获取最新的数据,或则某个规则让其缓存更新。
目前我好像需要写两次的请求,处理两次 request 参数,才能刷新我的缓存
// 请求
[ZBRequestManager requestWithConfig:^(ZBURLRequest * _Nullable request) {
request.apiType = ZBRequestTypeCache;
...
} success:^(id _Nullable responseObject, ZBURLRequest * _Nullable request) {
if (request.isCache) {
// 刷新缓存
[ZBRequestManager requestWithConfig:^(ZBURLRequest * _Nullable request) {
request.apiType = ZBRequestTypeRefreshAndCache;
....
} failure:^(NSError * _Nullable error) {
}];
}
}];
@lishangjing-spec 你的方法看起来是两个请求,但其实第一个ZBRequestTypeCache ,只要有缓存,就不会走请求的,我只是把请求和获取缓存的方法进行了统一封装。你如果想要更简洁的写法可以参考下方,你可以在适合的时机调用。 [self requestList: ZBRequestTypeCache] [self requestList: ZBRequestTypeRefreshAndCache]
@Suzhibin
是的,我阅读了源码,ZBRequestTypeCache ,只要有缓存,就不会走请求的,会直接 return 0
;
因为我在过往写项目的时候我的场景是:
我没有去考虑调用接口对服务器的压力,我只希望前端的能给用户带来好的体验
我上面提供的代码,是对一个接口的处理,为了避免首次掉用两次请求,所以进行了 request.isCache 的判断,而在后续每次请求都会去刷新缓存,但是不去监听它的回调。
哈哈,这是我的描述,不知道描述的对不对,这个不是一个问题哈,只是想沟通下。
/* 读取缓存: 有缓存,读取缓存--无缓存,重新请求并存储缓存 缓存支持响应数据的格式:ZBJSONResponseSerializer,ZBHTTPResponseSerializer 可以与ZBRequestTypeRefreshAndCache 配合使用 /
并不会自动重新请求,会一直读取缓存内容,其中 可以与ZBRequestTypeRefreshAndCache 配合使用,是如何处理,是需要手动进行吗