javascript – AJAX的延迟计算

我想显示我网站用户的连接速度(Latency?).我认为通过测量 XMLHttpRequest对象请求和响应时间是可能的.代码如下.

var t;
function ajsend(){
    var request = new XMLHttpRequest();
    var url;

    request.onreadystatechange = function(){
        if( request.readyState == 4 && request.status == 200 ){
            var u = new Date().valueOf();
            var tiMetaken = u - t;
            var disp;
            if( tiMetaken < 100 )
                disp = "Excellent! " + tiMetaken + " milliseconds.";
            else if( tiMetaken < 500 )
                disp = "Very Good! " + tiMetaken + " milliseconds.";
            else if( tiMetaken < 1200 )
                disp = "normal! " + tiMetaken + " milliseconds.";
            else if( tiMetaken < 2000 )
                disp = "Poor! " + tiMetaken + " milliseconds.";
            else
                disp = "Very Poor! " + tiMetaken + " milliseconds.";
            document.getElementById("disp").innerHTML = disp;
        }
    };

    t = new Date().valueOf();
    url = "noscript.PHP";
    request.open("GET",url,true);
    request.send();
}

有用!但结果与浏览器Web控制台的测量结果略有不同.那么,它是AJAX的最佳方式还是AJAX的更好方式?谢谢.

解决方法

如果要比较服务器开始响应请求所需的时间,则检查readyState == 2可能会更好.

在readyState 2中,请求已从服务器接收到标头,因此它应该比readyState 4更快地可用.

另请注意,JavaScript在毫秒级别上并不准确,因此您可能会因此而获得一些差异.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...