测量ajax加载时间

时间:2013-10-23 23:47:15

标签: javascript jquery ajax

我有一个$ .ajax请求并保存了开始时间和结束时间(使用new Date().getMilliseconds())。我看到一个奇怪的事件,有时我会从startTime中减去endTime并获得一个负数。

(function(){
    var startTime = new Date().getMilliseconds();
    $.ajax({
        url:"/url.php",
        data: someObject,
        method: "POST",
        complete:function(r){
            var endTime = new Date().getMilliseconds();
            console.log(endTime - startTime); // sometimes negative?!
        }
    });
})();

有人可以解释一下吗?我确信除了时空连续体中的裂缝之外,还有一个合乎逻辑的解释。

(如果有更好的方法来衡量这一点,那也值得赞赏!)

3 个答案:

答案 0 :(得分:8)

.getMilliseconds返回创建Date对象时的毫秒部分。因此,在50%的比较中,该部分将高于或低于任何其他Date对象的部分。

你想要的是new Date().getTime(),自1970年Unix时代开始以来,它返回绝对毫秒。

答案 1 :(得分:5)

这通常是负面的(约一半时间),因为这不是自纪元(1970年1月1日)以来的毫秒数。这相当于获得当前日期时间的毫秒数。因此,如果自上一秒开始已经过了400毫秒,那么你将获得400 ...如果自上一秒开始已经过了800毫秒,你将获得800。

您正在寻找的功能是:new Date()。getTime()

答案 2 :(得分:2)

A little test says

var date     = new Date();
var systemMS = date.getMilliseconds();
var timeMS   = date.getTime();


alert( 'Currently your clock is at ms :   '+ systemMS );
alert( '"ms" since 1 January, 1970 UTC. : '+ timeMS   );

请尝试:

var start = new Date().getTime(); // note getTime()
$.ajax({
    url     :"/url.php",
    data    : someObject,
    method  : "POST",
    cache   : false,              // prevent caching response
    complete: function(){
        var end = new Date().getTime();
        console.log( end - start );
    }
});

MDN 说:

getMilliseconds getMilliseconds返回的值是0到999之间的数字。