思考 微博首页、微信朋友圈的刷新,数据加载策略

魏梓雄 发布于 2014/10/19 08:49
阅读 3K+
收藏 4

【开源中国 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的要求。 
因为我还没想到可以在不清除本地数据的情况下,有更好的加载策略,实现缺口数据的加载。保证本地的数据完整性和跟服务端同步。 



加载中
0
0
有初啊
有初啊

更多参考文档 

  • https://dev.twitter.com/rest/public/timelines
  • http://open.weibo.com/wiki/2/statuses/home_timeline

0
p
pigzhu
下拉获取最新数据不足20,同时移动端本地历史数据被更改情况下怎么更新(如有人点赞)?
魏梓雄
魏梓雄
每条记录有个更新时间,按更新时间排序,下拉刷新时,每次都获取最新的20条,然后清空本地的缓存
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部