评论是按照点赞数排序的,加载更多时,评论的点赞数发生了变化,导致某些评论被重复加载或没被加载,如何解决这个问题?

我看悟空问答在请求更多数据的时候,带了一个时间戳,我估计他们可能是利用这个时间戳来解决这个问题的,但是我不清楚其中具体原理。

阅读 5.8k
2 个回答

我觉得首先确定的是,评论不能重复、不能丢失。然后说下我的不成熟方案:

小数据量
  1. 每条评论都要记录创建的时间。
  2. 每个评论的点赞都要记录创建的时间。
  3. 当有用户访问评论列表接口时,记录他的第一次请求评论数据的时间,比如 '2020-01-01 10:00:00',然后取出来的所有评论的创建时间小于 '2020-01-01 10:00:00',所有点赞的创建时间小于 '2020-01-01 10:00:00'。

这样无论用户请求多少页的数据,数据的创建时间永远是发生在自己首次访问之前的。

大数据量:

将评论数据缓存起来,同样是记录第一次请求评论数据的时间 '2020-01-01 10:00:00',去命中缓存数据的时候,找缓存生成时间小于 '2020-01-01 10:00:00' 的。

新手上路,请多包涵

最保险的应该是前端每次取全量评论数据,然后遍历之前的评论,如果有顺序有变动,必须修改之前的评论内容
举例:
第一次加载10条评论,id从1到10。
第二次请求请求后台20数据,遍历之前的10条评论。如果顺序有改变,那么就必须修改成最新的。

前端做这件事情应该是很随意的,vue等框架使用双向绑定就可以完美支持这样的需求。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题