Ode*_*ded 5 ajax ruby-on-rails will-paginate infinite-scroll
我正在尝试使用will_paginate用于Rails 3.2应用程序,并且我没有看到任何引用,当有人在分页时数据库中的数据被更改时会发生什么.更具体地说,添加了新记录.
我可能会在这里遗漏一些东西,但如果我知道它是如何工作的,will_paginate只会计算数据库中的记录.假设我一次加载一个包含5条记录的页面,并希望它们按最新的顺序排序.用户加载页面并获取在第1页显示的记录6-10(当时的最新记录).然后,有人在表中插入另一条记录,id = 11.之后,第一个用户点击进入第2页,但现在第2页给出了记录2-6.因此,用户在两个页面中都获得了id = 6.
这个问题听起来并不坏,但它是非常糟糕的,如果你想使用will_paginate分页对于无限滚动如下所示:http://railscasts.com/episodes/114-endless-page
我考虑添加第一页加载的时间戳并将其传递给连续的ajax调用以过滤首先出现的记录,以便不获取重复项.
是否有一些最佳实践方法来处理这个问题?
如果仅添加记录,则检查时间戳的解决方案有效。另一种方法是使用返回的最旧记录的时间戳来获取下一组数据。
这样,如果删除一条记录,则不会跳过任何记录。
使用返回的最旧记录的时间戳在查询时间上也是有利的,因为数据库不需要计算出 100 条记录来获取第 101 条记录,它可以简单地获取早于某个时间的第一条记录(这要快得多)如果您的created_at列已建立索引-允许二分搜索)。
| 归档时间: |
|
| 查看次数: |
647 次 |
| 最近记录: |