使用Javascript查找下载速度
我正在研究如何检测给定系统的下载速度,我采用的方法如下 下载已知大小的文件,然后根据估计的时间计算 下载速度 下面是代码外观使用Javascript查找下载速度,javascript,download,download-speed,Javascript,Download,Download Speed,我正在研究如何检测给定系统的下载速度,我采用的方法如下 下载已知大小的文件,然后根据估计的时间计算 下载速度 下面是代码外观 function startDownload() { $('div.loading').show(); var startedAt,endedAt; // Size in KB var size = 16384; startedAt = (new Date().getTime()); console.log('.....Started.....'
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();
})
});
现在代码按预期工作文件下载,但我不明白我看到我的带宽被列为
但我无法理解为什么我看到了结果的巨大差异(大多数时候)
顺便说一句,我是
我相信差异的原因
我能想到这种差异的一个原因是延迟,因为我下载了不止一个文件,我很自然地认为,在我的情况下,下载延迟更大
但是
--即使我删除了延迟(仅适用于谷歌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);
};
函数查找延迟(){
var new_entries=window.performance.getEntries().length;
var潜伏期=0;
for(var i=window.previous\u条目;i
但是这也没有对speedof.me和otherjsfiddle结果的速度产生任何影响
现在问题来了
--就确切的下载速度而言,我信任谁
--如何改进我的方法?如果可以的话