Chromium浏览器的第一个HEAD请求花费的时间要高得多



我使用这个Javascript代码发送head请求并记录每个请求所花费的时间:

var url = "https://www.someexampleurl.com"
var xmlhttp = new XMLHttpRequest();
xmlhttp.responseType = "json";var t0 = performance.now();
xmlhttp.open("HEAD", url, true);
xmlhttp.onreadystatechange= function() {
if(xmlhttp.readyState==4){
var t1 = performance.now() - t0;
resp = xmlhttp.getAllResponseHeaders();
console.log(t1);
};};
xmlhttp.send();

我注意到第一个请求花费了614ms,随后的所有请求花费了170ms。这很奇怪,所以我用--disable web安全标志启动了chrome以允许CORS请求,并尝试将HEAD请求发送到谷歌和雅虎。结果是一样的。第一个请求将比随后的请求花费高得多。

我尝试使用PyCurl,在这种情况下,完成请求的时间更加一致,这让我怀疑这是否与铬设置有关?例如,一些禁用缓存等选项可能会解决这个问题?

经过一番搜索,我已经找到了答案。在第一个HEAD请求期间花费的额外时间用于打开TCP连接。由于Chrome会使连接保持一段时间(约1分钟(,因此后续请求所需时间较少。在PyCurl中,当请求完成时,连接将被关闭,因此每个请求都会受到额外的连接时间的影响。

相关内容

最新更新