【问题标题】:How does pagination on Reddit's home page work?Reddit 主页上的分页是如何工作的?
【发布时间】:2013-09-14 10:10:46
【问题描述】:

Reddit 使用时间衰减算法。这意味着排序顺序可能会发生变化。当用户转到第 2 页时,是否有一种机制可以防止他们看到在第 1 页上但在他们翻页之前被撞到第 2 页的帖子?它只是排序方法的一个可接受的缺陷吗?还是为用户缓存了前几页,这样就不会发生这种情况?

旁注:据我了解,Digg 不会受到此问题的影响,但 HackerNews 和 Reddit 可以。

【问题讨论】:

  • 这并不是像 Reddit 这样的系统所独有的——任何按“最新”排序的系统都有同样的潜在问题。
  • 给不知道 Reddit 现在是开源的任何人的说明。您可以在GitHub查看源代码。

标签: algorithm reddit


【解决方案1】:

从您看到的下一个 URL:http://www.reddit.com/?count=25&after=t3_dj7xt

很明显,下一页确保 page2 从 t3_dj7xt 之后的帖子开始 - 无论翻译成什么。这可以使用 ID 来完成,因此您将在 after=188 之后传递,然后下一页从 189 开始,从而确保在发生时间延迟时您不会看到相同的帖子

【讨论】:

  • 我注意到了。尽管这可能会导致您错过了当时被提升为出现在第 1 页上的帖子。您实际上是在 t3_dj7xt 帖子之后跳到,即使此时该帖子将在第二页上。
  • 但从技术上讲,这是处理它的正确方法。我希望第 2 页在我请求原始页面时始终显示第 2 页。如果我想查看最新的,我只需刷新或希望按下类似于 Twitter 等的“再发 2 篇文章”按钮......我从不喜欢按下第 2 页并让它看起来是第 1 页,因为我从未刷新过页面;)
【解决方案2】:

它可能使用了最后一个ID,而不是从限制。以这两个 SQL 示例为例:

SELECT * FROM Stories WHERE StoryID>$LastStoryID;

而不是:

SELECT * FROM Stories LIMIT 20, 10;

【讨论】:

  • 因此,如果排序顺序已更改并且 $LastStoryID 不会出现在第 2 页上,您可能会在此过程中错过一些故事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 2011-11-02
  • 1970-01-01
  • 2019-06-29
  • 2011-04-02
  • 2015-08-10
相关资源
最近更新 更多