【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
前话:新浪微博首页、微信朋友圈的页面是按照时间轴由最新-以前的顺序,采用下拉刷新、上拉加载更多的形式进行数据的更新 。设定:每页请求数据条数:20;
本地当前的数据
移动端:上拉(加载更早的数据),把本地最早的时间戳(20140901)作参数请求接口;
服务端:搜索这个时间戳之前的数据,按照倒序排序,返回头20条,就可以实现该功能。
不断重复该操作,可以一直获取到更早之前的数据,直到没有数据。
移动端:下拉(加载更新的数据),把本地的最新时间戳(20141001)作参数请求接口;
服务端:搜索这个时间戳之后的数据,按照倒序排序,返回最新的20条。
因为下拉刷新,获取到的数据是最新的,而不是当前本地最新时间的后20条数据。
获取的数据就会有两种可能性:
1. 新增的数据不超过20条
获取新增的数据,插入本地的数据库,本地的数据在 20140901—20141007 这段的时间 跟服务端的数据是同步的。
这种情况比较简单。
2. 新增的数据超过20条
假如获取的新增数据是1000条时,
第一种做法: 在移动端后台,发送50次请求获取这1000新增的数据,才能让本地数据在 20140901—20141007 这段的时间 跟服务端的数据是同步的。
但是这种做法很不合理, 用户可能不需要看到那么多的数据,那么就白白浪费消耗用户的流量。
第二种做法:获取最新的20条数据,同时清除本地的数据。这样可以保证 20141001—20141007 这段时间内的数据是连续不间断的,且这段时间内的数据是跟服务器的数据是同步的。
用户上拉(加载之前的数据),通过接口去请求之前的数据。
用户下拉(加载更新的数据),通过接口去请求更新的数据。如果出现超过20条的情况,那么重复上面的步骤(获取最新的20条数据,清除本地数据库)。
策略:根据本地最新的时间戳获取更新的数据时,如果超过20条,那么会清除本地的数据,以免让本地数据出现某个时间缺口。
万能的网友们,是否有更好的方式实现上拉,下拉刷新数据呢?在数据的完整性和流量的控制实现比较好的平衡。
在思考这个问题过程中,产生了一个疑问:移动端的本地数据库到底是什么作用呢?
1. 在无网络的情况下可以显示之前的数据。
2. 尽量实现加载过的数据,以后无需再次请求接口可以查看(无论是有无网络的情况下)。
我个人比较倾向于第2种观点。但是上面刷新的场景,第二种做法无法满足观点2的要求。
因为我还没想到可以在不清除本地数据的情况下,有更好的加载策略,实现缺口数据的加载。保证本地的数据完整性和跟服务端同步。
更多参考文档