我使用$.getJSON来提取对象的清单(100个条目,不是一个大集合),但是它需要8-10秒的时间来调用XHR。
想知道我是否遗漏了什么或者我可以做些什么来加速我的计划吗?
发布于 2012-03-04 08:33:49
在整个请求过程中,有很多事情可能出错。
下面是一些值得注意的领域,您可以检查瓶颈,从请求到响应。
由于这个操作是JavaScript,所以像IE6这样的旧浏览器、像上网本这样的低性能系统,甚至是在给定时间运行太多应用程序的弱设置系统,都可能受到影响。
忙碌的JavaScript是这里的罪魁祸首。JavaScript是单线程的,太多的操作会使浏览器陷入困境,并且可能会延迟排队的任务的运行。如果您的页面包含太多的JavaScript插件,或者包含编码不当的代码,其中一些代码甚至可能使用同步操作,就会出现这样的情况。
有可能是的。例如,PHP可能是每个请求的线程,但是它的代码的操作是同步的。如果一行PHP的执行时间太长,这就是延迟的一部分。在这一行完成之前,服务器将永远不会响应。
深入服务器,多个和/或嵌套的SQL查询,特别是对于常用的操作,可能并将导致进一步的延迟。建议只将查询限制在应该获取的内容上,而不是整个记录。如果无法避免嵌套查询,请尝试另一种检索数据的方法。
这适用于服务器端和客户端脚本。过度作业也可能是延误的原因。确定过度冗余的代码并合并/缩短它们。例如,在JS中,简单的条件分配操作可以用三元操作来完成。。
过度循环也是造成延误的常见原因之一。SQL中的一个错误是检索所有行并在PHP中计数它们,而不是在SQL中使用内置的COUNT()。错误有两重,您从SQL返回了太多的数据,其次是在PHP.中对太多项进行计数/循环。
带宽是必不可少的,因此尺寸很重要。因此,将返回数据限制在所需的范围内。开发人员喜欢JSON的主要原因是与XML和标记内容相比,JSON的大小更小。为此,还可以使用gzip compression.压缩返回数据。
发布于 2012-03-04 08:18:05
它牵涉到许多事情。我认为两个主要的瓶颈是
。
在大多数情况下,第一个是沉默的杀手。为了测试脚本,向页面发出一个getJSON请求,它只显示JSON字符串,不需要任何处理。像这样很轻的东西
{ "test" : "value" }在PHP中
回显{“测试”:“值”};
并向此页面发出getJSON请求,并检查脚本是否运行得很快。如果它是快速的,问题是在您的服务器脚本。
https://stackoverflow.com/questions/9553329
复制相似问题