列表分页,怎么保证第二页不出现第一页的某些条目

2019-04-06 12:41:30 +08:00
 mscststs

最近忽然又想到了这个问题。

很多网站都会用 列表+分页 的方式来展现信息,手机端也有下拉加载(分页的另一种表现形态),但是分页的同时又会出现一个问题:第一页的某些条目,在第二页又出现了。 原因是点下一页之前有几条数据被新的数据顶到了第二页。

想问问看有没有什么好的方法可以解决这种问题,不论是前端还是后端。

4706 次点击
所在节点    编程
13 条回复
yangg
2019-04-06 12:43:41 +08:00
拿最后一条的 ID 或者时间去不就好了
PHPJit
2019-04-06 12:43:56 +08:00
前端过滤去重
mscststs
2019-04-06 12:51:08 +08:00
@yangg 用 ID 确实可以,但是有些列表是这样的:比如论坛、贴吧贴子,是根据最后回复时间来排序的


@PHPJit 前端过滤的话会不会出现每个页面的 PageSize 不固定?我感觉前端过滤的话可能也有一定的问题
woodnaonly
2019-04-06 13:12:03 +08:00
@PHPJit 后端太菜丢给前端不可取
iConsLii
2019-04-06 13:14:51 +08:00
可以在第一页跳到第二页的时候,记录个最新的 ID 或者时间点,在后面几页都带上
kindjeff
2019-04-06 13:18:37 +08:00
ffeii
2019-04-06 13:26:23 +08:00
排序会实时变动的列表不适合分页
kltt22
2019-04-06 13:35:29 +08:00
起始 ID +数量
Vegetable
2019-04-06 13:55:58 +08:00
说用 id 的是搞笑呢?你这个起始 id 被顶到第一位怎么办?

这不是一个技术问题,而是设计问题.不用去纠结这个.就算是要纠结也是产品经理该纠结的事情.

看第一页的时候,第二页的某个帖子有人回复,那么我翻到第二页就看不到这个帖子了,同时看到了第一页的最后一个帖子.
极端情况下会出现翻到第二页发现和第一页的内容完全相同.
这是无法用技术解决的.只能从设计上就降低这个问题带来的影响,并且需要考虑的情况非常多.提高系统复杂度,造成用户学习困难.
这其实是一个非常常见的问题,但是一直也没有一个合理的解决办法,以至于大家都默认了这个状态是对的.并不是大家没有注意到问题,而是这真的没有合适的方案.
回复时间排序方案下,每一个帖子的索引顺序都是动态变化且毫无规律的,可能向前也可能向后.而用户看帖和翻页都是需要一定时间的.单向翻页没办法保证不出现重复和遗漏.任何尝试解决的方案都至少会打破排序规则和页面显示条数这两个限制中的一个.

所以干脆就不用回复时间排序,这并不是什么好的规则,只能说中规中矩.V 站作为一个社区就没有采用根据回复时间排序的规则,也挺好的.
信息流现在也不太使用时间排序了不是吗?都是推荐排序了.这可能也算你说的解决方案之一吧.
tangweihua163
2019-04-06 15:01:40 +08:00
“加载更多” ???
akira
2019-04-06 20:42:51 +08:00
2l 的方案就是最简单的了。
后端的方案不是没有,但是都略重
night98
2019-04-07 04:32:57 +08:00
全部取缓存,定时任务刷新缓存,设定 30-120 秒时间刷
Ultraman
2019-06-21 08:12:51 +08:00
据观察小草就存在这个问题并且看起来没有被处理

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

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

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

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

© 2021 V2EX