当URL具有相同的响应时间时,为什么某些AJAX调用比其他调用需要更长的时间才能完成

Why do some AJAX calls take drastically longer to finish than others when the URLs have the same response time?

本文关键字:调用 其他 时间 URL 响应时间 为什么 AJAX      更新时间:2023-09-26

为了简化我的情况;我有3个PHP页面。其中两个分别添加和删除数据库中的行。第三个获取所有行,将它们编码为JSON并打印结果。

我已经对所有页面的执行进行了计时,时间从0.001秒到0.004秒不等。以下是Ajax调用的时间:

将整个表提取为JSON:8-12ms
添加行:990-1010ms
删除行:990-1010ms

添加和删除时间的响应时间在我的应用程序中造成了不必要的延迟,因为PHP的执行时间只有几秒钟,它们的输出只是成功的"1"和失败的"0"(与fetch调用相比,fetch调用将多达100行(约10列)的数据打印为JSON)

我所有的Ajax返回时间都是用Firebug来衡量的。所有Ajax调用都是通过jQuery($.ajax())进行的。

我猜这与Firefox不考虑GET请求得到响应有关,除非它收到了特定数量的字节或字符,而1秒的响应时间是某种超时

在这个问题上有什么智慧可以分享吗?


我已经在Chrome和Opera中计时了AJAX加载时间(平均值):

歌剧:
*所有AJAX调用~15毫秒

铬:
*移除行并获取行:~25ms
*添加行:~350ms

我的应用程序在Opera中快速响应,但在所有其他浏览器中都有不同程度的迟缓。确切的原因我还不清楚。


我也选了IE 9的时间,它的性能几乎与Opera相同。我的应用程序现在可以在两个浏览器中快速运行。

显然,有些浏览器在URL中使用localhost而不是127.0.0.1会产生神秘的副作用。延迟整整一秒就是其中之一。使用127.0.0.1为我解决了这个问题。

如果你使用HTTPWatch会更好。它会告诉你所有js文件、css和页面渲染等的确切时间。这样你就可以分析哪个调用需要更多的时间以及为什么。我不确定我是否回答了你的问题,但希望你能从HTTPWatch得到一些帮助。

这里您有一篇好文章,将告诉您如何通过最小化请求时间来提高网站性能。

我没有任何信息可以作为基础,但我现在的猜测是罪魁祸首之一:

  • 磁盘速度慢-添加和删除行可能需要比读取更多的磁盘访问权限(加上MySQL可能正在进行查询缓存)
  • 索引-MySQL必须在更改或添加列时更新其索引

除非你应该评测你的代码。使用xdebug和/或直接通过MySQL运行MySQL查询,看看它们需要多长时间。