RESTful api 分页,游标问题

2015-09-16 10:06:58 +08:00
 daydaysay

获取用户粉丝列表。

由于数据多,所以会分段返回。

一般都是在 mysql 中 offset (页数 * 每页数)

但是考虑到,两个请求中间,如果有个新粉丝进来,这个时候就会将上个请求末尾的那个用户在这次请求中重复返回去。

如果 cursor 返回中,用关注时间来当隔断的话,当时间有重复,分页还是会不精确

大家有没有完美的解决方案。

4986 次点击
所在节点    API
15 条回复
9hills
2015-09-16 10:14:58 +08:00
好多系统貌似不 care 这个重复,比如 v2ex
oott123
2015-09-16 10:21:43 +08:00
有的可以用 since_id 做,好处多多
hjxx
2015-09-16 10:58:07 +08:00
时间+用户 id 呢
qq12365411
2015-09-16 11:02:34 +08:00
加上个 [关注时间] 可以防止你说的 突然 有个新粉丝来的问题

offset (页数 * 每页数) where 关注时间< 初次查询的时间
ToysMall
2015-09-16 11:05:17 +08:00
since_id max_id
codeyung
2015-09-16 11:48:38 +08:00
time 标记
loading
2015-09-16 12:10:15 +08:00
这个比较麻烦的,例如正在看第一页,每页 10 条,点第二页是新加了 10 条,这页码突然就变成第三页…
从用户角度开看…第二页跑哪去了~
wingoo
2015-09-16 12:27:01 +08:00
这种事要看重要程度, 你在意吗?
jucelin
2015-09-16 12:36:26 +08:00
可以直接参考 weibo 的 API 设计: http://open.weibo.com/wiki/2/statuses/friends_timeline
还是要看数据更新的速度来判断是否需要这样做。
zonghua
2015-09-16 12:45:30 +08:00
@loading 百度贴吧客户端就是这个鬼样子,下拉刷新,发现又回到原来的位置。
icegreen
2015-09-16 13:34:35 +08:00
考虑用时间戳+loadmore 模式呢
alsotang
2015-09-16 13:44:00 +08:00
这点重复,无所谓啦
abelyao
2015-09-16 13:47:03 +08:00
以上一页最后一个粉丝 ID 做参数,而不是以页面 ID 做参数
daydaysay
2015-09-16 15:34:10 +08:00
如果算作重复,那肯定只能当作 bug 来对待拉。我已经知道怎么解决这个问题了。谢谢各位。
liuhui244671426
2016-07-13 12:01:07 +08:00
这个问题都是算成可优化的项,不算 bug 了吧.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX