
什么是多余的数据请求?
如GIF所示:

“休闲食品”被点击了两次,两次都出现了loading也就是说两次都请求了数据。第二次请求数据就是多余的。
这里的流程是:
点击左边的cell,传一个id到后台,获取到数据后展示。
为避免多余的数据请求,我使用的解决方案是:
请求数据之前先在缓存数组中寻找缓存的model,如果有,就不请求数据,直接用缓存的,如果没有,再请求数据,并且将model放到缓存数组里。
1.需要一个用来缓存model的数组
/** 右边模块的model缓存数组 */
@property (nonatomic, strong) NSMutableArray *itemsModelArray;
2.请求数据前看看有没有缓存的,有就直接用
// 从缓存数组里找model,如果有就直接用
for (CQBoutiqueItemsModel *itemsModel in self.itemsModelArray) {
if ([itemsModel.catID isEqualToString:model.ID]) {
self.itemsView.model = itemsModel;
return;
}
}
//------- 请求数据 ------//
如何判断是否有缓存的model,我的方法是遍历缓存数组查看是否有model的id与传入的id一致的。
3.如果没有缓存的,请求数据,并缓存
//------- 请求数据完成 ------//
// 赋值model
self.itemsView.model = itemsModel;
// 放入缓存数组
[self.itemsModelArray addObject: itemsModel];
使用缓存后的效果如下:

只要是请求过的就不会再请求了。
注意:
刷新的时候记得清空缓存数组,要不然刷新就失去意义了。
网友评论