$.getJSON速度较慢
$.getJSON is slow
我使用$.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
请求,检查脚本是否运行得很快。如果速度很快,问题就出在服务器脚本中。
- 如何将getJson的响应保存在全局变量中
- Wacom stu-430签名捕获速度太慢
- 如何在速度模板中获取LiferayPortlet实例id
- 使用本地文件而不是$.getJSON
- 我想放慢html中进程栏的速度
- jQuery.getJSON失败,语法错误
- Knockout绑定大量数据的速度较慢
- 带有Spring的$.getJSON未执行回调
- jQuery$.getJSON抛出意外令牌
- Wordpress:未捕获引用错误:未定义速度
- ASP.Net AJAX$GetJson函数获胜'不要被处决
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- 为什么有些jQuery程序员使用像$.get、$.getJSON和$.when这样的jQuery函数来代替$.ajax
- Css优化谷歌页面速度洞察
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 在ruby on rails中使用jquery getJSON获取数据
- 录制速度javascript
- $.getJSON速度较慢
- getJSON 加载速度慢,.toggle() 不触发