Rails 推荐一个游标分页的 gem:rails_cursor_pagination

Rei · December 26, 2022 · Last by ryudoawaru replied at January 28, 2023 · 812 hits

游标分页是指不用页数作为查询条件,而是用排序的 id 值为条件的分页方式。

页数分页因为用到 offset,在大量数据的时候会产生性能问题。并且页数分页不适合于会变动的、滚动更新的时间线展示(内容会重复或缺失)。

本来我考虑自己写一个,实际写的时候发现要考虑 正序/逆序 * 向前查/向后查 的四个情况,查询条件很容易写乱了。后来一搜有个现成的 gem,就用这个了 https://github.com/xing/rails_cursor_pagination

这个 gem 目前使用的人很少,但代码质量很高,不污染其他对象,文档比代码还多。相比 pagy-cursor 更完善,支持以其他排序字段+id 的联合索引查询。

它的工作原理在 README 里写的很详细,建议阅读 https://github.com/xing/rails_cursor_pagination#how-does-it-work

有需要的可以收藏一下。

pg 应该有个 gem 就是专做游标分页的,好多年了。

Reply to tim_lang

还记得名字吗?我想对比下实现。

You need to Sign in before reply, if you don't have an account, please Sign up first.