【问题标题】:improve performance in ajax request提高ajax请求的性能
【发布时间】:2009-12-22 12:55:11
【问题描述】:

我正在以这种方式使用 jQuery 和 asp.net 执行 ajax 请求:

$.ajaxSetup({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  dataType: "json"
});

$.ajax({
  url: "/WebServices/CompareDates",
  data: "{allClients: '" + allClients + "'}",
  success: function(msg) {
    SuccessCompareDate(msg.d);
  }
});

这个 ajax 请求每 1 秒执行一次,使用 javascript setInterval。 我得到平均 700 毫秒的响应。 但是,我需要在最长 150 毫秒内做出响应。

我已经使用 WebMethod 代替了 webservice,但效果也不太好。

在服务器中一切正常。在 c# webservice 中也是如此,它只返回一个布尔值。 我需要表现。 有人可以帮助我吗? 谢谢..

【问题讨论】:

  • 直接请求(没有 AJAX)如何执行?类似的价值观? 100% 是 AJAX 问题吗?
  • @Pekka:有趣,我没有从那个角度思考。只是好奇,为什么要比较普通请求和 ajax 请求?

标签: .net jquery ajax web-services json


【解决方案1】:

在这种情况下,您的问题很可能是您无法控制的,例如网络延迟。您的语法或方法没有问题;虽然有些因素我们看不到。以下是一些调试路径。它们中的任何一个都可能产生结果,具体取决于您正在处理的具体内容以及您上下传递的数据。

  • 这可能不是您的服务器端代码。但可以肯定的是,让您的 Web 服务不进行任何处理,只返回一个小的文字值,并查看是否存在时间差。
  • 可能不是您的 jquery ajax。但为了确定起见,请作为直接请求和 Pekka 建议的方式尝试。
  • 我现在不知道您要传递的数据的大小。如果它是任何大小,请考虑在尝试上述第一个选项之后尝试仅传递一个很小的值。
  • 我不确定你的时间安排如何。确保您在回调方法开始时获得时间差,任何渲染之前。有时存在渲染问题会真正减慢速度。做同一件事的不同方法可能需要不同的时间。例如,直接的 javascript .innerHtml 通常非常快,但其他更新标记的方式可能会很慢,并且可能因浏览器而异。
  • 同样,将 allClients 变量放在一起是否涉及大量处理?如果是这样,请比较您在此类处理之后开始的时间。

【讨论】:

    【解决方案2】:

    我希望这是在您的开发箱中。您可能需要查看您的服务器端代码,甚至可能是数据库。显然请求/响应的大小越小(您可以使用 Fiddler/Charles 之类的工具来查找大小),响应越快。看起来您正在为您的响应返回一个布尔值,您的请求怎么样,它有多大?你真的可以在你的服务器端代码中放置一个计时器来查看执行需要多长时间吗?

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 2019-01-19
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2019-08-06
      • 2019-12-30
      • 2011-01-06
      相关资源
      最近更新 更多