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/

私が信じている違いの理由その違いを考えることができる理由の 1 つは、複数のファイルをダウンロードするための遅延です。

しかし

-- レイテンシーを削除しても (Google 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);
     };

しかし、それもspeedof.meの結果と他のjsfiddleの結果に関して速度に違いはありませんでした

今質問ですか?

- 正確なダウンロード速度に関して、私は誰を信頼していますか?

- どうすれば私のアプローチを改善できますか? 私ができる場合 ?

4

0 に答える 0