我想显示我网站用户的连接速度(延迟?)。我认为通过测量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的更好方式?感谢。
答案 0 :(得分:1)
如果您想比较服务器开始响应请求所需的时间,那么检查readyState == 2
可能会更好。
在readyState 2中,请求已从服务器收到标头,因此它应该比readyState 4早一些。
另请注意,JavaScript在毫秒级别上并不准确,因此您可能会因此而产生一些差异。