ダウンロード/アップロード速度を測定し、多数の同時 ajax リクエストを作成しようとしています。それらのいくつかはブラウザ接続の制限によりブロックされるため、次のようなことを行っても実際のダウンロード時間を確立できません。
var start = new Date;
$.get('/data').done(function () {
console.log(new Date - start);
});
だから、私はこのように生の xhr を使用しています:
var open, start, end;
var req = new XMLHttpRequest();
req.open('GET', '/data', true);
req.onreadystatechange = function () {
switch (this.readyState) {
case 2:
case 3:
if (!start) { start = new Date(); }
break;
case 4:
if (!end) { end = new Date(); }
console.log('%d: pending = %d, download = %d, total = %d', i, start - open, end - start, end - open);
break;
}
};
if (!open) { open = new Date(); }
req.send();
jQueryを使用して同じことを行う方法はありますか?
アップデート
start
ajaxリクエストの前ではなく、requestState
2または3に変更した後(実際にはダウンロード/アップロード)に初期化する必要があります。
更新 #2
jQuery バグトラッカーに関連する問題があります: http://bugs.jquery.com/ticket/9883