首页 > 其他 > 详细

问题:客户端从服务器分页获取列表,如何保证流量最少,且客户端和Server数据的一致性?

时间:2014-02-15 08:19:08      阅读:383      评论:0      收藏:0      [点我收藏+]

遇到一个典型问题:客户端从Server分页拉取一组数据。如图所示:(iOS图示)

bubuko.com,布布扣

用户点击View1的“查看”,进入View2.客户端在View2,触发从Server拉取数据操作。

【问题】:
由于Server的数据很大,比如有1000条数据。客户端为了【减少数据流量】没有必要一次全部拉下来,客户端采用分页拉取(例如:分5页拉取,每次拉取200人)。参考具体的场景:
● 如果是首次进入View2,没有缓存,则拉取第一页(0-199条),获取后并保存到本地,如果用户继续往上滑动列表到达底部,触发拉取第二页(200—399条)的事件。
● 此时,用户没有兴趣继续往下看了,反而滑动列表到顶部,触发重新获取列表的操作。如果没有版本号控制,那么客户端扔需要重新拉取第一页,这是流量的浪费。
● 那么,加入版本号控制!客户端和Server增加一个版本号version。看似解决了问题。
● 似乎加入版本号更复杂啦:
从无缓存说起,第一页上传version=0,Server必然返回第一页的结果,客户端做缓存;
但是,第一页完成后,需要更新客户端的version为最新么?
1. 更新version,那么获取第二页的时候,Server一看version跟自己一样,不给客户端数据了。
2. 不更新version,等到所有数据完成后再更新version,如果用户拉取第一页后,采取了全量拉取,仍会造成第一页数据流量的浪费。

参考其他App,比如“今日头条”客户端,也是这种模式。是怎么实现的呢?
期待大家帮忙思考!!!

----------------------------------

网友“人中赤兔马中吕布”给了一个解决方案:

版本号的话,可以采取xxx.xxx的形式,最后一个xxx表示页数,前面的版本号可以表示其他的概念
● 更新到第几页客户端版本号就已此页的分页号来标识
● 服务器比较的时候同时比较两个xxx具体的版本号

问题:客户端从服务器分页获取列表,如何保证流量最少,且客户端和Server数据的一致性?

原文:http://blog.csdn.net/hherima/article/details/19163859

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!