我即将在网络应用中开发无限滚动项目(这只是分页项目的特定用户体验),但我有点困惑如何处理新项目的添加问题一个用户滚动/翻阅项目。我们如何处理这些未同步的数据?
假设我打开页面数据库时有100个项目。
后端会发生什么?
这是如何解决的?甚至在Stackexchange网站上,当用户浏览问题页面时,内容被分页并流缓存更改?
这个问题应该问程序员吗?我不确定......
答案 0 :(得分:0)
通过提供
传统上不进行分页,最容易解决这个问题而是提供
这称为键集分页或键搜索方法分页。两者通常都需要额外的参数,如排序和过滤,但这两种技术都相似,所以它与这个答案无关。
这可以防止在将新项目添加到列表顶部时返回无效页面,但它也有一个缺点,就是不能让您跳转页面(即获取第10页,而我们正在查看页面5)。但这就是为什么在特定情况下使用它,例如无限滚动,这个问题不存在甚至不需要。
请参阅性能比较以及有关键搜索方法的许多解释:
http://use-the-index-luke.com/sql/partial-results/fetch-next-page
基本上我们想要做的就是沿着这些方向做某事(假设我们按时间顺序按相反顺序排序并假设 CreateDate 具有如此高的精度以至于它被认为是唯一的):
with LastRecord
as (
select CreatedDate
from Records
where Id = @LastRecordId
)
select r.*
from Records r, LastRecord l
where r.CreatedDate < l.CreatedDate
offset 0 rows
fetch first @PageSize rows only;