【发布时间】:2013-12-10 00:44:03
【问题描述】:
我遇到了一个无法解释 ajax 请求的网络问题。这是背景:
我的网站有很多联系页面,我们在其中收集有关不同社交网络(twitter、linkedin、viadeo、google)上某个人的信息,然后将其显示出来。
由于这需要发送许多 ajax 请求,我们决定将其中一些请求转移到 JSONP 并使用我们的一些子域,这样我们就不会达到浏览器对每个域的最大请求数的限制。
因此,当一个联系人页面加载时,我发送了 7 个 JSONP 请求(通过子域)和 2 个“真实”ajax 请求(意味着使用 xhr 对象)。这 2 个 ajax 请求都使用不同的参数调用相同的 PHP 操作“SocialTab”,而其他 JSONP 请求正在调用不同的操作。
由于我们在联系页面上遇到了速度问题,因此我决定监控这些请求,并意识到它们可能需要很长时间才能完成,其中一些可能需要长达 15 秒,平均10 秒。使用谷歌网络面板更深入地查看我的 SocialTab ajax 请求表明,几乎 100% 的时间都花在等待来自服务器的响应上(cf screen)。
然后我认为是服务器端的问题,所以我把PHP处理部分注释掉了,除了返回什么都不做。结果是一样的,所以 PHP 部分不负责控制台告诉我的“等待”时间。如果超过 4 秒没有处理,怎么可能需要等待 4 秒?
我的最后一个测试是删除我的 JSONP 请求,并且只发送 SocialTab 请求。令人惊讶的是,等待时间大大减少,并且更有意义,如下面的屏幕所示。
有人解释一下吗?
注意:我正在测试的网站托管在我本地网络中的服务器上,我们在 Symfony 1.4 下运行
【问题讨论】:
标签: javascript jquery ajax performance request