如何设计好一个分页功能

本贴最后更新于 1736 天前,其中的信息可能已经天翻地覆

场景

在网站开发、移动 APP 开发的时候,遇到数据量多的时候,都会有人性化的分页功能。但是,看似简单的分页功能,其实存在很多的设计技巧以及不少的坑。

存在的问题

设计

下面以移动 APP 开发为例,谈谈分页功能的设计。

最常见的设计方案是,服务器接收客户端提供的两个参数:页码和每页数据量大小,服务器返回数据和分页栏(包括下一页和上一页)。这里的重点在于服务器是如何根据参数查询到数据的。

总结

最近开发生成的一些想法,欢迎各位指教,提供更好的设计方案。

打赏 10 积分后可见
10 积分 • 2 打赏
  • 分页
    6 引用 • 49 回帖
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    76 引用 • 289 回帖 • 2 关注
  • 设计
    97 引用 • 700 回帖 • 1 关注
9 回帖
请输入回帖内容...
  • zk123

    另外想补充的,如果整体数据很大,将整体数据快照不易,可以采用定时快照的方式进行。所有查询维护一份快照,快照由定时任务控制,定时更新。

    这样牺牲了一部分的实时性,但是内存空间节约了下来。可能在缓存交替时,仍会出现重复现象,但是出现的几率更小了;假如不能忍受的话,可以考虑对整个快照加标识,如果发现客户端请求的是过期的快照时,应让它重新刷新列表。

  • 其他回帖
  • 88250

    服务器每次进行第一页查询时生成一个数据集快照,以后每次分页查询时直接查询快照即可。这种方式可以避免数据重复、数据丢失的问题。缺点是每次进行第一页查询时会相对比较耗时,这是一个优化的重点。

    这一点没看明白。


    limit offset 这个方式我觉得没问题,因为服务端的数据变化对于客户端来说在时间这个维度上是不可感知的,
    精确地和所有客户端保持状态同步不是不可能,但实际上是不可行的。

  • 88250

    @mainlove 分页问题邀请 🚁

  • kanner

    @88250 快照就是会把符合条件的数据存储起来(缓存)。limit offset 没问题,是因为查询的时候会带个第一次查询的时间作为条件?sym 的分页不知是如何实现的?

  • 查看更多回帖