2

我正在检测给定系统的下载速度,我找到的方法如下

下载已知大小的文件,然后根据估计的时间计算下载速度

下面是代码看看

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://speedof.me/

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结果的结果也没有任何影响

现在的问题?

- 在确切的下载速度方面我相信谁?

——我的方法如何做得更好?如果我能 ?

4

0 回答 0