为什么我在 b 站,贴吧,微博,知乎等等的评论区,都有看到过把几个评论显示一次,然后紧接着又显示一次的现象?从 10 年前到现在一直有?
1
HeyWeGo 2022-10-12 10:57:10 +08:00
用手机刷 B 站 APP 也是这种感觉。
第一次不知道,一直往下滑,好奇怎么滑不完?后来仔细看才发现,评论会循环出现! |
2
kop1989smurf 2022-10-12 11:04:42 +08:00
应该是默认会有几个作为官方定调,或者系统自动判定的“热评”置顶导致的。
|
3
HariopaNic 2022-10-12 11:08:21 +08:00
这属于前端问题还是后端问题
|
4
BugCry 2022-10-12 11:08:40 +08:00 via Android
分页问题吧,假设原本的评论序号是 10 ,在你浏览第一页的过程中,突然别的评论被顶上去了,刚刚的评论序号就成了 11 。接着加载第二页,从序号为 11 的评论开始,所以就出现了重复显示的现象
|
5
icyalala 2022-10-12 11:10:05 +08:00
我猜大概是这样:现在的评论既不是按时间也不是按 id 排序的,都是按一堆规则排的,所以每隔一段时间再去取排序是会变的,所以去重只能在前端做。
前端翻页的时候如果去重的话,可能会出现新的一页评论只有很少几条,或者翻页但是没有任何新评论出现的情况。 |
6
zhang77555 2022-10-12 11:12:07 +08:00
应该是分页和缓存的问题, 估计由于不会造成什么问题, 所以也懒得去解决?
|
7
edward1987 2022-10-12 11:16:48 +08:00
有一种原因是 排序没有按时间正序,然后分页拉取的时候就出了问题
比如评论 A 本来在第一页,等你要拉第二页的时候它又被挤到了第二页. |
8
Leonard 2022-10-12 11:19:00 +08:00
有的是因为就是有两条相同的评论😂知乎有时候评论的时候提示错误,然后又点了一次发送,就发送了两次
|
9
nothingistrue 2022-10-12 11:22:50 +08:00 3
多变内容在分页显示时,不管是分页还是自动往下扩展,都会因为后台顺序变动导致重复或丢失信息,这确实是世纪难题。
对于评论,还是可以解决的,额外增加一个筛选条件“ time < 首次进入页面或者首次查询的时间” ,同时另起区域单独显示 “time > 上述时间”的新评论,就行了。这有两个前提,一,列表严格按照时间排序,二,列表的元素一旦添加就不可更改,即列表只会追加元素,不会移动元素。所以这只适合按照时间排序的评论,对于主题列表,或者不按照时间排序的评论列表,就无效了。 |
10
otakustay 2022-10-12 11:42:02 +08:00
大并发、高热点下列表去重就是世界级难题,包括关系型数据范式、事务原子性等也会在大并发下变成世界难题
|
11
otakustay 2022-10-12 11:42:33 +08:00
热点数据的分页根本不是正常的实时筛选这种逻辑,全是靠缓存的,自然不同的缓存之间有数据重复很正常
|
12
HugoChao 2022-10-12 11:50:47 +08:00
我猜是后端根据热度来排序的算法问题
|
13
pkoukk 2022-10-12 11:56:03 +08:00
现在的评论排序算法综合了 点赞 评论 UP 主回复 UP 主点赞 UP 主置顶 时间 等等一系列规则,已经没办法做到稳定的后端分页了,只能让前端去去重。
前端去重偶尔出点问题很正常 |
14
lookStupiToForce 2022-10-12 12:00:08 +08:00 7
本贴非常好地展示了外行人眼里天经地义般简单的一个事情在内行人眼中的真实难度
#用户 #开发团队 #产品经理 #程序员 #甲方 #乙方 🐶 |
15
Helsing 2022-10-12 12:14:03 +08:00 via iPhone
分页问题,很难处理
|
16
Building 2022-10-12 12:17:56 +08:00 via iPhone
给你一堆精选评论,审核后通过,仅对方可见,黑白名单,三天可见……等等一堆规则,你也瞎
|
17
rgyyt 2022-10-12 12:20:18 +08:00
啊原来是普遍现象吗,我一直以为是我因为网卡
|
18
Jooooooooo 2022-10-12 12:55:59 +08:00
分页问题, 你要完美解决要花大量成本, 收益却没多少. 得不偿失.
|
19
abc8678 2022-10-12 14:39:24 +08:00 via Android
现在看手机没意思,全是看过的在反复推荐
|
20
yinhuochong6666 2022-10-12 14:40:51 +08:00
理论上可以把刷到过的条目缓存,刷新时去重;但是如上所述,没啥收益不如不做
|
21
duanxianze 2022-10-12 16:59:56 +08:00
确实是个很难的问题,主要是要解决的话需要花费很大的精力,但提升却很小,得不偿失
|
22
callmesmc 2022-10-12 17:01:03 +08:00 via iPhone
reddit 也是...
|
23
dtdths1 2022-10-12 18:09:36 +08:00
很难,因为评论是不断变化的
|