これは、あなたが考えるかもしれないより多くの痛みになるでしょう.
最初の問題は、Javascript に ping がないことです。ほとんどの Javascript が得意とするのは、HTTP といくつかの類似プロトコルです。
2 つ目の問題は、いくつかの ajax リクエストを発行して結果の時間を計ることができないことです (これはあまりにも明白です)。同一生成元ポリシーにより、ajax を使用して、ページの送信元以外のサーバーと通信することができなくなります。JSONP を使用するか、イメージ タグの src を変更するか、その他のより間接的な方法を使用する必要があります。
3 つ目の問題は、大量のデータが返されるようなことはしたくないということです。データ転送時間や大規模なサーバー処理によってレイテンシの測定が妨げられることは望ましくありません。
第 4 に、キャッシュされている可能性のある URL を要求することはできません。オブジェクトがたまたまキャッシュにあった場合、「レイテンシ」の測定値は非常に低くなりますが、意味はありません。
src
私の解決策は、属性のないイメージ タグを使用することでした。ドキュメントの読み込み時src
に、有効なサーバーを指すように設定しますが、無効なポートを使用します。一般に、適切な 404 エラー応答を生成するよりも、サーバーが単に接続を拒否する方が高速です。あとは、画像からエラー イベントを取得するのにかかる時間を測定するだけです。
フィルドルより:
var start = new Date().getTime();
$('#junkOne').attr('src', 'http://fate.holmes-cj.com:8886/').error(function () {
var end = new Date().getTime();
$('#timer').html("" + (end - start) + "ms");
});
技術が向上する可能性が高いです。ここにいくつかのアイデアがあります:
- DNS ホスト名の代わりに IP アドレスを使用します。
- 「ping」を複数回実行し、最高スコアと最低スコアを除外して、残りを平均します。
- Web ページの処理が非常に重い場合は、UI の負荷が最も軽いと思われるときにテストを実行してみてください。