大型网站如何做分页?
大型网站如何处理搜索结果的分页,以便第 n 个页面的加载速度大致与第一个页面一样快?例如,谷歌、Youtube、Hulu 等。
How do large sites handle pagination on search results so that the nth page loads roughly as quickly as the first? For example, Google, Youtube, Hulu, etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
YouTube:
因此它可能会将前 1k 个结果缓存在类似于 memcached blob 的内容中。
Hulu:限制为 3000 个结果。可能也被缓存了。
谷歌:这纯粹是黑魔法。请记住,它使用大量分布式计算(而不是简单的数据库查找),并且可能缓存任何查询的前 n 个结果,以及每个结果页面的“html 就绪”结果和中间结果(请参阅 动态编程)。
总结一下:您对任何页面的第一次查询可能需要更多时间,因为它可能导致引擎启动数据库/分布式搜索,但是,它的结果(远远超过您将显示的数量)将可能会在非常快的缓存中保留一段时间,以便为同一查询提供任何页面,而不会再次给数据库带来压力。
Youtube:
so it probably caches the first 1k results in a something similar to a memcached blob.
Hulu: limits to 3000 results. Probably cached as well.
Google: It's pure black magic. Keep in mind it uses a lot of distributed computing (and not a simple db lookup), and probably caches the first n results for any query, and also "html ready" results for each result page, and intermediate results (See Dynamic Programming).
To summarize: Your first query to any page might take more time since it can cause the engine to start a db/distributed search, however, it's results (much more than the amount you will be showed) will probably be kept for a while in a very fast cache for serving any page for the same query without stressing the db again.