瀑布流(无限翻页)带来的问题

比起传统翻页,瀑布流式翻页现在越来越火。来看一下区别

1. 传统翻页:

    每次翻页都会重新渲染一个全新的页面,如论坛。

    问题:当你翻页时,可能会发现,哎这帖子我刚才在上一页看过啊,这是很正常的,因为帖子一般是按最后一个回复的时间排序的。

    解决方法: 无,传统分页就这样。

2. 瀑布流:

    每次翻页,会把下一页的数据追加到当前页面。

    问题: 如果翻页时数据发生变动,将会在同一个页面出现重复数据,想一下前面说的论坛的场景。

    解决方法:

         1. 客户端去重

             客户端记录之前加载的数据,在获得新数据后,客户端去重。

             缺点: 去重后数据会少,比如新数据获得10条,其中有2条重复的,最后只加载了8条,且顺序无法保证。

             优点: 服务端代码不用改动。

         2. 修改分页逻辑

             如朋友圈,其是按朋友圈的发布时间排序的,且发布时间永远不可变。因此只需取当前页面最后一条发布时间的下10条数据即可。

             即将

SELECT * FROM posts WHERE username='licong' LIMIT 10

             修改为

SELECT * FROM posts WHERE username='licong' AND publish_time > :time LIMIT 10

         优点: 简单,有效

             缺点: 限制极为苛刻,数据必须按照一个固定不变的属性排序,比如前面说的发布时间。试想论坛这个场景,帖子最后顶帖时间是可变的,如果用这个逻辑去做,会导致有一些帖子永远不可见。

        

  

    

posted @ 2016-05-13 13:51  Selol  阅读(2000)  评论(0编辑  收藏  举报