4

Web サイトのユーザーの接続速度 (レイテンシー?) を表示したい。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によるより良い方法ですか? ありがとう。

4

1 に答える 1

1

サーバーがリクエストへの応答を開始するのにかかる時間を比較したい場合は、チェックするreadyState == 2ほうがうまくいくかもしれません.

readyState 2 では、リクエストはサーバーからヘッダーを受信して​​いるため、readyState 4 よりも少し早く利用可能になるはずです。

また、JavaScript はミリ秒レベルでは正確ではないため、そのために多少の違いが生じる可能性があることにも注意してください。

于 2013-10-07T10:23:00.293 に答える