gpt4 book ai didi

ajax - 如何在基于算法的无限滚动中防止重复

转载 作者:行者123 更新时间:2023-12-04 08:05:03 25 4
gpt4 key购买 nike

这更像是淋浴的想法。因此,几乎所有社交媒体平台都具有无限滚动功能。但他们如何防止重复?

那么,假设您使用 ajax 获取内容。例如,如果您有一个包含 50 个项目的静态列表,并且您希望在每次用户到达底部时再获取 10 个结果,您可以轻松地按例如排序。页:

$.ajax(
url = "mysite.api/content?page=2"
...
)

但是对于像 YouTube 这样的网站,您的推荐可能每秒都在变化,结果无法按页面排序。例如。如果我想获取 YouTube 首页的内容,它看起来像

$.ajax(
url = "youtube.api/start?user=aXqq1...&page=1"
...
)

但是,当我进一步滚动时,YouTube 会获取另一个页面,该算法可能已经推荐了不同的视频,或者使用了其中的一些视频,因此可能会出现重复的视频。所以这不是一个选择,我真的很喜欢他们如何阻止它。


我目前的想法是:

1。网络套接字:

每次我滚动到底部时,YouTube 都会查询一次视频内容,然后从预加载列表中加载更多内容。

问题:YouTube 不知道我要滚动多远。这意味着他们要么存储大量视频推荐,要么在比方说 500 个视频之后执行新查询,这将再次导致重复问题。


2。在 ajax 请求中包含已经列出的视频

每次获取新视频时,YouTube 都会将视频列表(已加载)发回 API,以便排除这些视频。

问题:每次发出新请求时加载时间都会变慢,因为必须交换更多数据。


这让我回到了开始的地方:它们如何(有效地)防止重复?

最佳答案

即使是分页结果,您也可能会遇到同样的问题。我去过的网站上,当我点击第二页时,它的结果也在第一页上(StackOverflow 就是其中之一)。我认为这是一个权衡计算效率与结果质量的决定。我找到的一个简单解决方案 here说您可以通过保留用户开始查看时间的时间戳,然后过滤结果以排除比该时间更新的任何内容来完成它。实现起来应该相对便宜,但这意味着您需要重新加载才能获得更多相关信息。如果这是标准的做法,我不会感到惊讶,考虑到有多少应用程序和网站在工作流程中构建刷新。例如,刷新 reddit 很容易意外地令人沮丧,当你离开它几分钟再回来时,youtube 应用程序会刷新它的推荐。如果用户开始期望需要刷新以获得最新结果(在我看来,他们有),那么这种可以说是次优的解决方案可能是可行的方法。

关于ajax - 如何在基于算法的无限滚动中防止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66249343/

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