我想显示我网站用户的连接速度(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在毫秒级别上并不准确,因此您可能会因此而获得一些差异.