AJAX查询在Chrome查询和初始连接之间的奇怪延迟但不是FF,它是什么?

arc*_*101 8 ajax performance firefox google-chrome flask

我的客户端上有一个AJAX查询,它将两个参数传递给服务器:

var url = window.location.origin + "/instanceStats"            
$.getJSON(url, { 'unit' : unit, "stat" : stat }, function(data) {
    instanceData[key] = data;
    var count = showInstanceStats(targetElement, unit, stat, limiter);
});
Run Code Online (Sandbox Code Playgroud)

服务器本身是一个非常简单的Python Flask应用程序.在该特定URL上,它从查询中获取"unit"和"stat"参数,以确定该文件中的CSV文件和行的名称,获取该行,并将数据发送回格式为JSON的客户端(大致1KB).

这是有趣的事情:当我测量数据返回所花费的时间时,我发现有些查询很快(在20到40毫秒之间),有些查询很慢(在320到350毫秒之间).改变"stat"参数(即在CSV中选择不同的行)似乎没有任何影响.快速和慢速查询通常来回切换(即所有偶数查询都很快,所有奇数查询都很慢).Python服务器本身为每个查询报告大致相同的时间.

AJAX本身似乎也没有任何影响,因为我可以使用JS中构建的url并将其自己粘贴到浏览器中并获得相同的行为.以下是两个后续查询的一些测量值:

快速:http://i.imgur.com/VQ7qopd.png

慢:http://i.imgur.com/YuG0ROM.png

这似乎是特定于Chrome的,因为我在Firefox上尝试过它,同样的实验每次都会产生大致相同的查询时间(30到50毫秒之间).这很不幸,因为我想在Chrome和Firefox上部署.

是什么导致了这种行为,我该如何解决?

小智 9

我也遇到过这种情况.它似乎只在使用localhost时发生.如果您使用127.0.0.1(甚至计算机名称),它将没有额外的延迟.


asd*_*ads 6

我也遇到了,而且完全相同:我的 Node.js 应用程序提供 Ajax 请求,无论/url我请求哪个,它都是30msor 300ms,并且它来回切换:奇数请求很长,偶数请求很短。

我在 Chrome Web Inspector(又名 Chrome DevTools)中看到的是“DNS 查找”和“初始连接”之间存在很长的差距。

他们说它与OCSP这里相关: http://www.webpagetest.org/forums/showthread.php ?tid=12357

OCSP 是某种证书验证协议: https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol

localhost127.0.0.1似乎可以解决这个问题:现在是响应时间30ms