时间Ajax请求 - 负值

时间:2015-09-30 11:16:01

标签: javascript jquery ajax

我们有一个小的javascript测试,旨在测试客户网络,然后再使用我们的软件。它的工作原理是对我们的服务器进行AJAX调用,逐步增加每秒调用的次数,并计算获取响应所需的时间,以便在网络负载增加时了解延迟。

为了给请求计时,我们在jquerys sentTime事件上将beforeSend附加到jqXhr对象,然后计算完成后的差异。我们通过创建一个时间列表(只是一个int数组)来模拟多个用户的负载,然后使用setTimeout将ajax请求设置为触发,如下所示:

function configureAjaxRequestTimings() {
    var time = 0;
    for(var i = 0; i < requestMax; i++) {
        ajaxRequestTimings.push(time += getRandomTime());
    }
    that.totalRequestTime = time;
}

function getRandomTime() {
    return (Math.random() * 4000) + 3000; // generate new time (between 3 secs and 7 secs)
}

function StartRequests() {
    for (var j = 0, thisTime; thisTime = ajaxRequestTimings[j++];) {
        doAjaxRequest(thisTime);
    }
};


function doAjaxRequest(timeDelay) {
    setTimeout(function () {
        $.ajax({
            type: 'GET',
            contentType: 'application/json',
            url: url,
            timeout: 60000,
            beforeSend: function (jqXhr) {
                jqXhr.sentTime = new Date().getTime();
            },
            complete: function (response) {
                var now = new Date().getTime();
                var requestTime = now - response.sentTime;
                requestTimes.push(requestTime);
            }
        });
    }, timeDelay)
}

但是,我们偶尔会看到推迟到requestTimes的负面时间,但我看不出这是怎么发生的(除非在complete之前调用beforeSend)。我无法在我的开发环境中重新创建此问题。是否有一些聪明的内联或类似的性能技巧,一些浏览器可能会导致这个问题? (到目前为止,它只发生过两次镀铬,最后一次镀铬45)

注意:我知道由于js的单线程性质,这种方法不会给出精确的毫秒时间(甚至接近),这个想法只是在增加负载的情况下看到响应曲线的一般“形状”

0 个答案:

没有答案