我正在检测给定系统的下载速度,我找到的方法如下
下载已知大小的文件,然后根据估计的时间计算下载速度
下面是代码看看
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/
差异的原因我认为我能想到差异的一个原因是延迟,因为我下载的文件不止一个,我很自然地认为下载延迟在我的情况下更多
但
-- 即使我消除了延迟(顺便说一句,只能使用谷歌浏览器),我也没有看到显着的差异
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结果的结果也没有任何影响
现在的问题?
- 在确切的下载速度方面我相信谁?
——我的方法如何做得更好?如果我能 ?