V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
blakejia
V2EX  ›  问与答

实时变动数据。如何正确的处理分页呢?

  •  
  •   blakejia · 2020-07-13 16:52:59 +08:00 · 1918 次点击
    这是一个创建于 1587 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如一个论坛,所有帖子按最后用户回复时间排序。那如果在用户浏览第一页完到获取第二页数据时。整个数据集合已经与请求第一页不一致了。
    可能会导致用户最终看不到某些帖子,或者某些帖子出现了两遍
    13 条回复    2020-07-19 18:23:21 +08:00
    blakejia
        1
    blakejia  
    OP
       2020-07-13 16:54:02 +08:00
    刚测试了下。V2 也存在这个现象
    183shl
        2
    183shl  
       2020-07-13 16:54:16 +08:00   ❤️ 1
    lastTime 或者 lastId
    lxk11153
        3
    lxk11153  
       2020-07-13 16:55:17 +08:00   ❤️ 1
    "按最后用户回复时间排序" 肯定是不行的,你得换成按帖子创建时间排序不就行了
    af463419014
        4
    af463419014  
       2020-07-13 16:56:13 +08:00   ❤️ 2
    事实就是翻页的时候会出现重复和遗漏的数据,正常现象,一般都不处理
    可以再看参考下豆瓣小组,贴吧等,也是一样的效果
    pwli
        5
    pwli  
       2020-07-13 17:03:50 +08:00
    正是因为数据变动了,所以才表现的和翻页前不一致,感觉没毛病啊
    gz911122
        6
    gz911122  
       2020-07-13 17:05:04 +08:00   ❤️ 3
    jjianwen68
        7
    jjianwen68  
       2020-07-13 17:17:52 +08:00
    以题目讨论的论坛帖子来说,实际使用时翻到下一页发现有重复,完全可以接受的
    blakejia
        8
    blakejia  
    OP
       2020-07-13 17:28:13 +08:00
    @af463419014 #4 这个问题在翻页刷新的时候不怎么明显。但是在上滑加载的场景里面有可能会导致连着两条一样的。特别碍眼。🐶
    optional
        9
    optional  
       2020-07-13 17:32:36 +08:00 via iPhone
    用 id 排序 而不是 limit/offset 后者还有其它问题呢。
    lower
        10
    lower  
       2020-07-13 17:34:56 +08:00   ❤️ 1
    这种误差应该是可容忍的,要不就把下一页的数据缓存
    qiayue
        11
    qiayue  
       2020-07-13 17:35:29 +08:00   ❤️ 1
    @blakejia 前端显示时对于重复 ID 做过滤就好了
    autoxbc
        12
    autoxbc  
       2020-07-13 18:07:31 +08:00
    前端是一页一页翻,后端不应该一页一页吐数据,应该一次出 10 页的,前端做无刷新翻页
    lxk11153
        13
    lxk11153  
       2020-07-19 18:23:21 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   959 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:39 · PVG 05:39 · LAX 13:39 · JFK 16:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.