gpt4 book ai didi

ruby-on-rails - 为滚动界面缓存分页数据并避免客户端重复

转载 作者:IT王子 更新时间:2023-10-29 06:15:41 24 4
gpt4 key购买 nike

基本上这里是设置:

您有许多市场商品,您希望按价格对它们进行排序。如果有人在浏览时缓存过期,他们会突然出现潜在的重复条目。这似乎是一个非常糟糕的公共(public) API 体验,我们正在寻求避免这个问题。

我见过的一些基本哲学包括:

  • Reddit,他们在其中跟踪客户看到的最后一个 ID,但他们仍然处理重复项。
  • 将分页,这是一个简单的实现,基本上根据您要返回的项目的倍数和偏移量返回结果
  • 然后有很多不同的解决方案,涉及Redis sorted sets等。但是这些也没有真正解决如何删除重复条目的问题

有没有人有相当可靠的方法来处理无重复的分页排序动态列表?

最佳答案

如果您需要分页的项目已正确排序(基于唯一值),那么您唯一需要做的就是按该值而不是偏移量选择结果。

简单的 SQL 示例

SELECT * FROM items LIMIT 10; /*page 1*/

假设第 10 行有 id = 42(id 是主键)

SELECT * FROM items WHERE id < 42 LIMIT 10; /* page 2*/

如果您使用的是 postgresql(可能 mysql 有同样的问题),这也解决了使用 OFFSET 在性能方面很糟糕的问题(OFFSET N LIMIT M 需要扫描 N 行!)

如果排序不是唯一的(例如,按创建时间戳排序会导致同时创建多个项目),您将遇到重复问题

关于ruby-on-rails - 为滚动界面缓存分页数据并避免客户端重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com