$ .getJSON很慢

时间:2012-03-04 08:05:28

标签: javascript json

我正在使用$.getJSON来提取对象的库存(100个项目,而不是大型集合),但是XHR调用需要8-10秒。

想了解我是否遗漏了某些东西或者我可以做些什么来加快我的计划?

2 个答案:

答案 0 :(得分:3)

在整个请求期间,有很多事情可能出错。

以下是您可以检查瓶颈的一些值得注意的区域,从请求到响应。

  • 您的浏览器/系统/硬件是否支持?

    由于此操作是JavaScript,IE6等旧版浏览器,上网本等低功耗系统,甚至在特定时间运行过多应用程序的弱设置系统都可能会受到影响。

  • 浏览器是否立即执行任务?还是被推迟了?

    忙碌的JavaScript是罪魁祸首。 JavaScript是单线程的,过多的操作可能会使浏览器陷入困境,并可能导致排队的任务无法运行。可以实现此目的的场景示例是当您的页面包含太多JavaScript插件或包含编码不良的代码时,其中一些甚至可能使用同步操作。

  • 可能是PHP / JSP / [其他一些服务器端语言]吗?

    是的,可能。例如,PHP可能是每个请求的线程,但它的代码的操作是同步的。如果PHP行需要太长时间才能执行,那么这将构成该延迟的一部分。在该行完成之前,服务器将永远不会响应。

  • 您是否使用多个/嵌套SQL查询?

    深入了解服务器,多个和/或嵌套的SQL查询,特别是对于常用操作,可能并且将导致进一步的延迟。建议是将查询仅限于应该获取的内容,而不是整个记录。如果无法避免嵌套查询,请尝试使用其他方法检索该数据。

  • 未经优化的函数调用

    这适用于服务器端和客户端脚本。过度的操作也可能是延误的原因。确定过度冗余的代码并合并/缩短它们。例如,在JS中,可以使用三元运算完成简单的条件赋值操作。

  • 循环过多?

    过多循环也是造成延误的常见原因。 SQL中的一个错误是检索所有行并在PHP中对它们进行计数,而不是在SQL中使用内置的COUNT()。错误是双重的,你从SQL返回太多数据,第二个是你在PHP中计算/循环太多项目。

  • 您是拨号还是什么?

    带宽是必不可少的,因此尺寸很重要。因此,仅将您的返回数据限制为所需的数据。开发人员更喜欢JSON的主要原因是它与XML相比尺寸较小以及标记内容。除此之外,您还可以使用gzip压缩来压缩返回数据。

答案 1 :(得分:2)

它涉及很多事情。我认为有两个主要瓶颈是这些

  • 生成JSON的服务器脚本可能导致问题或需要很长的处理时间来生成输出。

  • 您的页面上有太多脚本,如效果或滑块,getJSON运行缓慢

在大多数情况下,第一个是无声杀手。为了测试您的脚本,请向页面发出getJSON请求,该请求只显示JSON字符串,而不进行任何处理。像这样非常轻量级的东西

{ "test" : "value" }

在PHP中

echo'{“test”:“value”}';

并向此页面发出getJSON请求,并检查脚本是否正在快速运行。如果速度很快,则问题出在您的服务器脚本中。