Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有更好的方法来衡量从Ajax调用返回数据所需的总时间?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 有没有更好的方法来衡量从Ajax调用返回数据所需的总时间?

Javascript 有没有更好的方法来衡量从Ajax调用返回数据所需的总时间?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在研究这样一种方法: function aa() { var start = new Date().getTime(); $.ajax({ cache: false, url: href + params.param, dataType: 'html' }) .done(function (responseText) { xx(); }) .fail(function (jqXHR

我正在研究这样一种方法:

function aa() {
    var start = new Date().getTime();
    $.ajax({
        cache: false,
        url: href + params.param,
        dataType: 'html'
    })
    .done(function (responseText) {
        xx();
    })
    .fail(function (jqXHR, textStatus, errorThrown) {
        yy();
    })
    .always(function () {
        zz(start);
    });
};

function zz(start) {
    var end = new Date().getTime();
    var elapsed = end.getMilliseconds() - start.getMilliseconds();
}
首先。这是衡量时间的有效方法吗?还有其他方法可以做到这一点。例如,是否有某种方法可以从Ajax标题中读取某些内容,如果有,如何读取


请注意,我正在寻找一个解决方案的代码,这样我就可以报告的HTML页面上的时间

Firefox的Firebug会告诉你一个电话需要多长时间,我认为你的方式很干净。除非您自己将请求放在响应中,否则响应中没有内置内容可以告诉您请求需要多长时间。但是,如果您尝试执行某种服务器端日志记录,则不会考虑请求通过连接所需的时间。

也许可以运行某种监控PC,每隔一段时间重新加载页面并保留自己的日志。。。如果传输时间过长,则发出警报


在*nix下,您可以通过一个简单的脚本和wget和/或curl实现自动化。

如果您使用的是Ruby或.Net,您可以查看。它会做你想做的事。或者你可以检查一下他是如何在里面做的。

这绝对是一种有效的方法来衡量从发出请求到返回数据之间的时间长度。目标是测量客户机在发出请求和接收响应之间所经过的时间,因此使用客户机的时钟是理想的。(您通常希望避免涉及同步服务器和客户端时钟的时间比较;使用
Date:
HTTP头就可以做到这一点。)

我要做两件事来改进:

  • 始终首先绑定
    处理程序。由于
    延迟的
    回调是按照添加的顺序执行的,因此绑定
    始终
    首先意味着我们不会因为
    完成的
    处理程序中计算代价高昂的操作而取消度量

  • 不需要设置
    日期
    对象。静态
    Date.now()
    以毫秒为单位以数字形式返回当前时间

您甚至可以在范围内进行已用时间计算,以便
done
/
fail
回调可以使用它

function aa() {
    var start = Date.now(), elapsed;
    $.ajax({
        cache: false,
        url: href + params.param,
        dataType: 'html'
    })
    .always(function () {
        elapsed = Date.now() - start;
    });
    .done(function (responseText) {
        xx(elapsed);
    })
    .fail(function (jqXHR, textStatus, errorThrown) {
        yy(elapsed);
    });
};

谢谢,但我正在寻找一种代码解决方案,可以用来向使用该页面的管理员报告响应时间。告诉管理员使用firebug。在Ajax调用开始时启动一个时间,并将该时间存储在函数的var中,然后使用success来计算经过的时间,这样您就可以在1函数中完成所有操作。使用“success”:function(data){start-end}或诸如此类,但我正在寻找一种解决方案,将其作为HTML页面信息部分的一部分进行报告。@Alex-谢谢,但您的建议与我在问题中的建议相同。我正在尝试验证这是否是一种正确的方法,还想知道是否有一种方法可以从返回标题中获取信息。你好,Jeremy-我正在寻找一种解决方案,可以让我的管理员在运行报告时获得响应时间。这并不是我真正需要自动化和记录的东西。谢谢。你在算什么时间?只是数据包传输时间还是相关的jQuery处理时间?您需要的精度是多少?谢谢您的建议。你同时帮了我两三件不同的事情。我会落实你所有的好建议!