使用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结果的速度产生任何影响

现在问题来了

--就确切的下载速度而言,我信任谁

--如何改进我的方法?如果可以的话