我工作时检测到给定系统的下载速度,我采取的方法如下:
下载已知大小的文件,然后根据估算的时间计算出来 下载速度
以下是代码外观
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/
BTW我的
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 结果
的结果,这对速度没有任何影响现在问题是什么?
- 在确切的下载速度方面我信任谁?
- 我的方法怎么做得更好?如果可以的话?