如何加快这个JSON请求过程?



抱歉,如果这太抽象了。

我主要使用jQuery创建一个Chrome扩展,用户可以订阅提要。然后,从这些提要中"随机"选择的项目将被发送到用户的新标签页上。

这是我计划使用的过程。这是最快的方法吗?

  1. 检查用户订阅了哪些feed,并使用嵌套的$.getJSON请求将它们引入。
  2. 至少在接下来的12小时内将这些缓存在本地,以便可以快速再次检索。
  3. 将feed转换为JSON对象并使用concat进行组合。
  4. 在这个新的、单一的、合并的feed中打乱项目。
  5. 加载前36个结果(并使用砌体显示)
  6. 添加一个无限滚动,当用户向下滚动时加载36个结果块。

除此之外,我还打算在服务器上缓存JSON提要12个小时左右。

这是最快的方法吗?考虑到用户订阅更多提要的频率并不高,交换步骤2和步骤3是否会更快?

因为重点是加载速度,所以我很乐意牺牲很多其他东西。例如,如果数据库更好,我不一定要使用JSON。类似地,缓存可能会持续很长一段时间,因为用户正在显示的对象将以"随机"顺序排列,因此不必是最新的。

您可以在服务器端完成大部分工作,只发送36个所需的提要,根据其内容,这些提要应该加载得非常快。

你最大的瓶颈如下:

  • 获取各种feed(每个feed约1秒)
  • 为特定用户构建feed列表
  • 将提要下载到用户的浏览器

后两个不是很长,但是加载36个预先排序的项目和组织任意数量的随机元素之间的区别很重要,因为新标签页只使用几秒钟。

最简单的解决方案是获取服务器上的所有提要,将它们放入数据库中,并为需要它们的用户检索最后36个匹配。这有几个优点:

  • 从数据库中抓取需要毫秒。从远程页面获取提要可能需要几秒钟。
  • 数据库是用来查询的,所以提取、合并和排序结果很容易。
  • 简短的,预先过滤的项目列表将下载得更快。

最新更新