我如何加快这个JSON请求流程?

时间:2014-03-27 15:17:50

标签: javascript jquery json

如果这太抽象,请道歉。

我主要使用jQuery创建Chrome扩展程序,用户可以在其中订阅供稿。 A'随机'然后,在用户的新标签页上提供从这些订阅源中选择的项目。

这是我计划使用的流程。这是最快的方式吗?

  1. 检查用户订阅的Feed并使用嵌套的$.getJSON请求将其引入。
  2. 至少在接下来的12个小时内在本地缓存这些内容,以便可以再次快速检索它们。
  3. 将Feed转换为JSON对象,并使用concat进行组合。
  4. 将这个新的单一组合Feed中的项目随机播放。
  5. 加载前36个结果(并使用Masonry显示)。
  6. 添加无限滚动,在用户向下滚动时加载36个结果块。
  7. 除此之外,我还打算在服务器上缓存JSON提要12个小时左右。

    这是最快捷的方式吗?交换第2步和第3步可能会更快,因为用户会订阅更多的订阅源不是很频繁吗?

    由于重点是加载速度,我还有很多其他人愿意牺牲。例如,如果数据库更好,它不必是我使用的JSON。类似地,缓存可以持续很长一段时间,因为用户正在显示的对象将是随机的'订单,所以不需要是最新的。

1 个答案:

答案 0 :(得分:0)

您可以在服务器端完成大部分操作,并且只发送36个必需的Feed,这些Feed应根据其内容加载速度非常快。

您最大的瓶颈如下:

  • 获取各种饲料(每个饲料约1秒)
  • 为特定用户构建这些Feed的列表
  • 将Feed下载到用户的浏览器

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

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

  • 从数据库中获取需要几毫秒。从远程页面获取源可能需要几秒钟。
  • 使数据库被查询,因此获取,合并和排序结果很容易。
  • 预先过滤的简短项目列表下载速度会快得多。