$.getJSON速度较慢

$.getJSON is slow

本文关键字:速度 getJSON      更新时间:2023-09-26

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

想知道我是否遗漏了什么,或者我可以做些什么来加快我的计划吗?

在整个请求过程中,有很多事情可能会出错。

从请求到响应,您可以在以下几个方面检查瓶颈。

  • 您的浏览器/系统/硬件是否可用

    由于这种操作是JavaScript,像IE6这样的旧浏览器、像上网本这样的低功耗系统,甚至在给定时间运行太多应用程序的弱设置系统都可能受到影响。

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

    繁忙的JavaScript是罪魁祸首。JavaScript是单线程的,过多的操作可能会使浏览器陷入困境,并可能延迟排队任务的运行。一个可能导致这种情况发生的场景示例是,您的页面包含太多JavaScript插件,或者包含编码不好的代码,其中一些甚至可能使用同步操作。

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

    是的,可以。例如,PHP可能是每个请求线程化的,但它的代码操作是同步的。如果一行PHP的执行时间太长,这就是延迟的一部分。在该行结束之前,服务器将永远不会响应。

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

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

  • 未优化的函数调用

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

  • 循环太多

    循环过多也是延迟的一个常见原因。SQL中的一个错误是在PHP中检索所有行并对其进行计数,而不是在SQL中使用内置的COUNT()。错误有两个方面,一是从SQL返回了太多数据,二是在PHP中对太多项目进行计数/循环。

  • 你是拨号上网还是什么

    带宽至关重要,因此大小很重要。因此,请将您的返回数据限制在所需的范围内。开发人员更喜欢JSON的主要原因是,与XML相比,JSON的大小更小,而且内容也有标记。除此之外,您还可以使用gzip压缩来压缩返回数据。

它涉及到很多东西。我认为两个主要的瓶颈是

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

  • 你的页面上有太多的脚本,比如效果或滑块,getJSON运行速度很慢

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

{ "test" : "value" }

在PHP 中

echo"{"test":"value"}";

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