特定のシステムのダウンロード速度を検出する作業を行っていますが、それを見つけるために取ったアプローチは次のとおりです
既知のサイズのファイルをダウンロードし、推定所要時間に基づいてダウンロード速度を計算します
ここにコードの外観があります
function startDownload() {
$('div.loading').show();
var startedAt,endedAt;
// Size in KB
var size = 16384;
startedAt = (new Date().getTime());
console.log('.....Started.....');
// window.earlier_entries = window.performance.getEntries().length;
var settings = {cached: false,datatype: 'html'}
var time = (new Date().getTime());
$.when(
$.ajax('/sample128k_2',settings),
$.ajax('/sample128k',settings),
$.ajax('/sample256k',settings),
$.ajax('/sample8192k',settings),
$.ajax('/sample512k',settings),
$.ajax('/sample1024k',settings),
$.ajax('/sample2048k',settings),
$.ajax('/sample4096k',settings),
$.ajax('/sample8192k',settings)
).done(function(a1,a2,a3,a4,a5,a6,a7){
endedAt = new Date().getTime();
var totalTime = (endedAt - startedAt);
console.log(totalTime);
// find_latency();
var totalsec = totalTime/ 1000;
// var totalsec = (totalTime - window.latency)/ 1000;
console.log(totalsec);
var size_mb = (size/1024/totalsec);
var data,identifier,speed;
if (totalsec > 0) {
if (size_mb >= 1) {
data = size_mb ;
identifier = ' MB/s';
}
else {
data = size/totalsec;
identifier = ' KB/s';
}
console.log(data);
speed = (data.toFixed(2) + identifier).fixed(2);
}
else {
speed = 'Too fast seem like around certainly >= 8MB/s';
}
$('span.speed').html(speed);
$('div.loading').hide();
$('div.text').show();
})
};
$(document).ready(function(){
$("a#start").bind('click',function(event){
$('div.text').hide();
event.preventDefault();
startDownload();
})
});
コードは期待どおりに機能し、ファイルがダウンロードされますが、帯域幅が次のようにリストされていることを理解できません
しかし、なぜ私は大きな違いが(ほとんどの場合)結果に見られるのか理解できません
http://jsfiddle.net/yahavbr/tEFpC/2/
ところで私のものは
http://speedboom.herokuapp.com/
私が信じている違いの理由その違いを考えることができる理由の 1 つは、複数のファイルをダウンロードするための遅延です。
しかし
-- レイテンシーを削除しても (Google Chrome でのみ動作します)、大きな違いは見られません。
function find_latency() {
var new_entries = window.performance.getEntries().length;
var latency = 0;
for(var i=window.earlier_entries;i< new_entries ; i++) {
latency += (window.performance.getEntries()[i].responseStart - window.performance.getEntries()[i].requestStart);
}
window.latency = latency;
console.log(latency);
};
しかし、それもspeedof.meの結果と他のjsfiddleの結果に関して速度に違いはありませんでした
今質問ですか?
- 正確なダウンロード速度に関して、私は誰を信頼していますか?
- どうすれば私のアプローチを改善できますか? 私ができる場合 ?