问题:客户端从服务器分页获取列表,如何保证流量最少,且客户端和Server数据的一致性?
2014-02-14 10:40
645 查看
遇到一个典型问题:客户端从Server分页拉取一组数据。如图所示:(iOS为例)
用户点击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,等到所有数据完成后再更新verson,如果用户拉取第一页后,采取了全量拉取,仍会造成第一页数据流量的浪费。
参考其他App,比如“今日头条”客户端,也是这种模式。是怎么实现的呢?
期待大家帮忙思考!!!
----------------------------------
网友“人中赤兔马中吕布”给了一个解决方案:
版本号的话,可以采取xxx.xxx的形式,最后一个xxx表示页数,前面的版本号可以表示其他的概念
● 更新到第几页客户端版本号就已此页的分页号来标识
● 服务器比较的时候同时比较两个xxx具体的版本号
用户点击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,等到所有数据完成后再更新verson,如果用户拉取第一页后,采取了全量拉取,仍会造成第一页数据流量的浪费。
参考其他App,比如“今日头条”客户端,也是这种模式。是怎么实现的呢?
期待大家帮忙思考!!!
----------------------------------
网友“人中赤兔马中吕布”给了一个解决方案:
版本号的话,可以采取xxx.xxx的形式,最后一个xxx表示页数,前面的版本号可以表示其他的概念
● 更新到第几页客户端版本号就已此页的分页号来标识
● 服务器比较的时候同时比较两个xxx具体的版本号
相关文章推荐
- ajax获取动态列表数据后的分页问题
- 使用Apache 的 FTP Client获取FTP服务器上的文件列表FTP response 421 received.Server closed connection问题的解决
- 客户端通过TCP通信分页从服务器获取数据
- 客户端通过TCP通信分页从服务器获取数据
- 客户端通过TCP通信分页从服务器获取数据
- 面试问题(如何保证分布式数据最终一致性)
- 关于WEB服务器如何获取客户端MAC地址的问题
- 主用Server和备用Server的数据如何同步和保证一致性?
- 使用Apache 的 FTP Client获取FTP服务器上的文件列表FTP response 421 received.Server closed connection问题的解决
- 客户端获取服务器数据中文乱码问题
- 10客户端导11g服务器数据时的问题
- 分析Memcached客户端如何把缓存数据分布到多个服务器上
- 如何解决分布式系统数据事务一致性问题
- XEIM 飞鸽传书服务器如何处理客户端的数据
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?
- SQL Server 2008 分页获取数据列表
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?
- WCF热门问题编程示例(5):WCF服务如何获取客户端在线用户数量?