【问题标题】:Fast way to make multiple AJAX calls进行多个 AJAX 调用的快速方法
【发布时间】:2016-03-01 10:58:09
【问题描述】:

所以我有一个 Web 应用程序,它对某些 API 进行大约 14-15 次 AJAX 调用。问题是所有 AJAX 调用所花费的时间几乎是我在浏览器中键入其 URL 时每个单独的 API 向我显示响应的时间的 3 倍。

我在 DOM Ready 事件中立即进行所有 AJAX 调用。

问题是我怎样才能加快这个过程,将 15 个 AJAX 调用放在一起,尽可能快地获得响应并相应地操作 DOM。

我想到的几点:

  1. 所有 AJAX 调用本质上都应该是 ASYNC。 (已经在做)。
  2. 不要同时进行所有 AJAX 调用。引发某种超时,因为同时进行所有 AJAX 调用可能会阻塞带宽并减慢进程的周转时间。
  3. 以任何方式减少 API 调用的数量。 (已经在做)。
  4. 尽可能少地操作 DOM。 (已经在做)。
  5. 在 AJAX 设置中设置 cache:true。我认为这不会真正有帮助,但我仍然会在我确信内容更新非常缓慢的地方这样做。

任何建议都会很有价值!谢谢。

我进行 AJAX 调用的方式

$(document).ready(function(){

    loadSentimentModule();
    loadCountModule();
    loadEntitiesModule();  
    // Some more function calls.

});

function loadSentimentModule(){

   $.ajax({
          url:someurl,
          cache:true,
          dataType:"json",
          success: function(data){

              // Based on data manipulating DOM.
          }

}

// Same kind of function defintions for all the functions.

【问题讨论】:

  • 展示你处理多个 Ajax 请求的方式..
  • @user1354678 已输入。请检查
  • Reducing the number of API calls by any means 当然,这就是您应该开始的地方。如果您只需发出一个 ajax 请求就可以处理所有数据,那么您就是赢家 :)
  • 如果您可以控制 API 服务器,您可以将所有这些调用重新组合成一两个调用。
  • 你有服务器在运行吗?您可以使用相同的想法。您的客户端向您的服务器发出一个请求(带有一组 api_to_call/params?),您的服务器将执行所有 API 调用并返回一个巨大的数据数组。它对客户来说更轻,您将获得一致的性能和响应时间

标签: javascript jquery ajax


【解决方案1】:

您可以不直接发出 ajax 调用,而是将它们排队并让经理控制队列,请参见此处:Queue ajax requests using jQuery.queue()

【讨论】:

  • 谢谢。不知道。但它是如何让事情变得更快的呢?
  • 在有限的资源上按顺序做事总是比并行快。正如您在 OP 中已经说明的那样,这里的有限资源是带宽,可能还有需要处理所有 XML 请求的浏览器
  • 带宽我不认为这是个问题。但是假设一个调用需要 10 秒,那么如果我将连续进行 10 次此类调用,那么它们将至少需要 100 秒(没有启用缓存),如果我将其中 10 次并行调用,时间将非常少。怎么说?
  • @void 对于某些特定的用户交互,您不能只进行一次相关的 ajax 调用吗?比如说,用户点击按钮loadSentimentModule,调用loadSentimentModule(),等等...?因为如果问题来自缓慢的 API,并且您无法以某种方式对其进行缓存,我认为这个问题实际上没有任何解决方案
  • @A.Wolff 问题是,当我进行单个 API 调用时,它需要 1 秒,而当我进行 10 秒调用时,需要 1 秒的调用开始需要 5 秒左右。我认为应该有解决办法
【解决方案2】:

我建议您在客户端使用async.js 模块。可能这就是你要找的东西。

【讨论】:

  • 它有什么作用?如果我进行并行 AJAX 调用,它会如何更快?
  • 真的和使用promise/deferred queue逻辑不同吗?
猜你喜欢
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多