jQuery $.ajax执行缓慢

3
我在一些网站上使用jQuery的$.ajax时,遇到了执行缓慢的问题。
我指的不是服务器响应时间长,而是$.ajax函数本身执行时间长。
下面是一个正常(快速)的例子:
访问jQuery.org并运行以下代码只需要3ms
var start = (new Date()).getTime();
$.get("https://jquery.org/projects/")
var end = (new Date()).getTime();
console.log("executed in " + (end - start) + "ms")

不好的(缓慢的)例子

然而,在我正在处理的一个演示网站上运行非常类似的代码需要324毫秒

var start = (new Date()).getTime();
$.get("http://sauce-demo.myshopify.com/collections/frontpage/products/bronze-sandals")
var end = (new Date()).getTime();
console.log("executed in " + (end - start) + "ms")

很显然,$.ajax(因此$.get)的响应将是异步的。但是什么原因导致执行时间增加如此之大呢?

谢谢。


3
你确定你没有将第二个设为同步,并使用了可能的ajax全局设置吗? - A. Wolff
只需2毫秒,点击此链接:http://jsfiddle.net/2L7g7be3/ - Felix Kling
我在 jsfiddle 上尝试了一下,这两个都在 1ms 内运行。 - Jeremy W
1
@A.Wolff提出了一个很好的建议,确实我可以说你必须考虑bps(大小/时间),而不是毫秒差异,因为你没有获取相同的数据。 - Leandro Bardelli
2
肯定看起来不是异步的。在获取后添加一个警报,你会发现有延迟。尝试在这里运行脚本,你会发现它们之间有差异。网络选项卡还有一个时间选项卡,你可以看到它们大多数都需要300毫秒,但其中一个是异步的,而另一个则不是。 - Spokey
1个回答

4

感谢大家给予的宝贵意见。你们说得没错 - 看起来在 JavaScript 文件中嵌套了一个全局 async: false 的设置:

jQuery.ajaxSetup({
  async: false
});

我不知道jQuery有一个全局异步设置。

是的 - 这对我有用...谢谢! - nsdb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接