6

追加のプラグイン(Javaなど)を使用せずに通常のブラウザーを使用して、クライアントからのサーバー(=リモートURL)の応答時間を測定するスクリプトを実装したいと思います。

ページの読み込み速度ではなく、ネットワーク速度(応答時間)のみを確認しています。

何を測定することをお勧めしますか?これはtcp/ipで実行する必要があり、ICMP(ping)のようなものではありません。

クライアント側での実装をどのように回避しますか?JavaScript(JQuery)を使用したいと思います。


更新:クロスドメインチェックが必要なため、ajax呼び出しはオプションではないようです

さらに、ajaxメソッドはまったく正確ではないようです。FireBugからの情報と比較すると、テストマシンでの結果のオーバーヘッドは約50ミリ秒(ドメインが何であってもほぼ一定の値です。その間の処理時間だと思います)のようです。

4

4 に答える 4

9

リクエストの時間を計るだけです:

var sendDate = (new Date()).getTime();

$.ajax({
    //type: "GET", //with response body
    type: "HEAD", //only headers
    url: "/someurl.htm",
    success: function(){

        var receiveDate = (new Date()).getTime();

        var responseTimeMs = receiveDate - sendDate;

    }
});
于 2013-02-13T08:35:54.353 に答える
1

mysite.net/speedtest のような URL で常に空の 200 OK 応答を返すリソースを作成します。次に、次のようなものです。

var startTime = (new Date()).getTime(),
    endTime;

$.ajax({
    type:'GET',
    url: 'http://mysite.net/speedtest',
    async: false,
    success : function() {
        endTime = (new Date()).getTime();
    }
});

alert('Took ' + (endTime - startTime) + 'ms');

これにより、リクエストをサーバーに送信するのにかかる時間と、サーバーがリクエストに応答するために必要な最小限のリソース セットをロードするのにかかる時間がわかります。

New: あなたの質問は、あなたが追加した追加情報と矛盾しています。あなたが制御していない URL へのクライアントの ping を取得したい場合 - これはサーバーからの応答時間を取得するために最初に要求したこととはまったく別の問題です。サーバーへのクライアントの ping を取得しようとしている場合は、ajax 呼び出しがそのトリックを行います。他のサーバーに ping を送信しようとしている場合、私はあなたの目的が何かについて少し混乱しています。

于 2013-02-13T08:35:46.620 に答える
0
var startTime = (new Date()).getTime(),
    endTime;
$.ajax({
type: "GET",
url: "test.html",
dataType: "html",
success:function(data){
endTime = (new Date()).getTime();
}
});

今、違いを取ります。

于 2013-02-13T08:40:09.903 に答える
0

とても簡単にできます。

var t = Date.now();
var t2;
$.ajax({
    url:'page',
    success:function(){
       t2 = Date.now();
       console.log(t2-t);//the time needed to do the request
    }
});

追加の読み込み時間を模倣するために、リクエストするページは空である必要があります。

于 2013-02-13T09:08:50.297 に答える