测量响应的延迟

时间:2015-05-19 10:18:33

标签: javascript ajax latency

如何测量任何异步 ajax 电话的延迟!!
是否有任何特定的库或api可用于从浏览器中提取所有这些信息 我一直在寻找可以在IE6上运行的解决方案

2 个答案:

答案 0 :(得分:0)

您可以在浏览器的控制台中查看此内容

enter image description here

或者你也可以查看你的请求函数的时间,例如:

function sendRequest(url) {
    var startTime = new Date(); //start time
    $.ajax({
        //your request here
        ,done: {
            var endTime = new Date(); //end time
            console.log("Request took " + (endTime-startTime) + " ms.");
        }
    }
}

关于异步调用,这取决于您的需求。如果您需要完整的执行周期(在客户端建立请求,发送请求,服务器端操作,接收数据,处理响应),那么您可以以相同的方式执行,但您必须确保您正在测量相同的操作,换句话说,匹配开始到结束,并确保它们对应。虽然基于我们讨论异步请求的事实,您应该仅测量部分,直到请求离开客户端。这取决于您的应用程序的实现方式。

答案 1 :(得分:0)

以下代码包含ajax函数

https://stackoverflow.com/a/18309057/2450730

用于衡量获得响应所需时间的函数。

可以使用Date对象完成此操作,但如果您想要精确输出,我会向您展示更好的方法。这仅适用于现代浏览器。

https://developer.mozilla.org/en-US/docs/Web/API/Performance/now

//Ajax XHR2

function ajax(a,b,c){ // Url, Callback, just a placeholder
 c=new XMLHttpRequest;
 c.open('GET',a);
 c.onload=b;
 c.send()
}

// Measuring the time in microseconds it takes to make the request.

var start;
function measure(){
 start=window.performance.now();
 ajax('URL',function(){
  var Delay=window.performance.now()-start;
  alert(Delay);
 });
}
measure()

返回值以毫秒为单位。或者用window.performance.now()替换Date.now()

通过更改ajax函数,还可以对ajax调用执行的各个进程进行计时。使用onreadystatechange

如果您有疑问,请询问。