2013-10-07 4 views
4

내 웹 사이트 사용자의 연결 속도 (지연 시간)를 표시하고 싶습니다. 나는 그것이 XMLHttpRequest 객체 요청과 응답 시간을 측정함으로써 가능할 것이라고 생각한다. 코드는 다음과 같습니다.AJAX의 대기 시간 계산

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(); 
} 

작동합니다! 그러나 결과는 브라우저의 웹 콘솔 측정과 조금 다릅니다. 그래서 AJAX 나 AJAX의 더 좋은 방법인가요? 감사.

답변

1

서버가 요청에 응답하는 데 걸리는 시간을 비교하려면 readyState == 2을 확인하는 것이 더 효과적 일 수 있습니다. 또한 당신은 또한 약간의 차이를받을 수 있도록 자바 스크립트 밀리 초 수준에서 정확하지 않은 참고가 다소 빨리 readyState가 4 이상 사용할 수

해야하므로

는 readyState가 2에서, 요청이 서버에서 헤더를 받았다 그것 덕분에.