抱歉,如果这太抽象了。
我主要使用jQuery创建一个Chrome扩展,用户可以订阅提要。然后,从这些提要中"随机"选择的项目将被发送到用户的新标签页上。
这是我计划使用的过程。这是最快的方法吗?
- 检查用户订阅了哪些feed,并使用嵌套的
$.getJSON
请求将它们引入。 - 至少在接下来的12小时内将这些缓存在本地,以便可以快速再次检索。
- 将feed转换为JSON对象并使用
concat
进行组合。 - 在这个新的、单一的、合并的feed中打乱项目。
- 加载前36个结果(并使用砌体显示)
- 添加一个无限滚动,当用户向下滚动时加载36个结果块。
除此之外,我还打算在服务器上缓存JSON提要12个小时左右。
这是最快的方法吗?考虑到用户订阅更多提要的频率并不高,交换步骤2和步骤3是否会更快?因为重点是加载速度,所以我很乐意牺牲很多其他东西。例如,如果数据库更好,我不一定要使用JSON。类似地,缓存可能会持续很长一段时间,因为用户正在显示的对象将以"随机"顺序排列,因此不必是最新的。
您可以在服务器端完成大部分工作,只发送36个所需的提要,根据其内容,这些提要应该加载得非常快。
你最大的瓶颈如下:
- 获取各种feed(每个feed约1秒)
- 为特定用户构建feed列表
- 将提要下载到用户的浏览器
后两个不是很长,但是加载36个预先排序的项目和组织任意数量的随机元素之间的区别很重要,因为新标签页只使用几秒钟。
最简单的解决方案是获取服务器上的所有提要,将它们放入数据库中,并为需要它们的用户检索最后36个匹配。这有几个优点:
- 从数据库中抓取需要毫秒。从远程页面获取提要可能需要几秒钟。
- 数据库是用来查询的,所以提取、合并和排序结果很容易。 简短的,预先过滤的项目列表将下载得更快。