1

ホスティングを提供するいくつかのサービスからファイルをダウンロードしています。無料ユーザーの Firefox をダウンロードすると (他のブラウザもすべてチェックしていませんが)、ダウンロード速度が 400KB で、終了まで残り 10 分であることがよくあります。これは、ファイルのダウンロードに 45 分以上かかり、たとえば「残り 1 分 40 秒」が数秒間表示されるため、BS です。

ユーザーに高速を提供します。彼らはどのようにそれをしますか?これは HTTP プロトコルのチートですか、それともブラウザのチートですか? Firefox が間違った値を表示するのはなぜですか?

4

3 に答える 3

2

私はこれを経験したことがありませんが、ファイルのダウンロードに Firefox を使用したことはありません。

つまり、リモートサーバーはファイルを高速で送信している可能性がありますが、短いデータバーストでは平均して「無料ユーザー」の速度になります。Firefox は、全体的な平均速度ではなく、これらのバースト中にデータがダウンロードされる速度を認識している可能性があります。

于 2012-04-10T20:43:03.147 に答える
-2

実際の帯域幅を取得する方法は次のとおりです。

https://superuser.com/questions/356907/how-to-get-real-time-network-statistics-in-linux-with-kb-mb-bytes-format-and-for

「netbps」と呼ばれるこのスクリプトを実行可能にします

#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes;

my $reporting_interval = 10.0; # seconds
my $bytes_this_interval = 0;
my $start_time = [Time::HiRes::gettimeofday()];

while (<>) {
  if (/ length (\d+):/) {
    $bytes_this_interval += $1;
    my $elapsed_seconds = Time::HiRes::tv_interval($start_time);
    if ($elapsed_seconds > $reporting_interval) {
       my $bps = $bytes_this_interval / $elapsed_seconds;
       printf "%02d:%02d:%02d %10.2f Bps\n", (localtime())[2,1,0],$bps;
       $start_time = [Time::HiRes::gettimeofday()];
       $bytes_this_interval = 0;
    }
  }
}

sudo tcpdump -i wlan0 -l -e -n | ./netbps

私が言えるのは、Firefoxが間違っているということだけです。このスクリプトは、1秒あたりのバイト数を適切に見積もることができます。これはFirefoxの見積もりの​​約1/4です。だから新しいルール:Firefoxが短すぎる時間を与えているように感じる場合は、4を掛けて本当の時間を取得します。

于 2013-01-11T03:58:21.003 に答える
-2

多くのプログレスバーは、単に気分を良くするために存在します。ファイルのダウンロードなどの場合、正確に見積もることは非常に困難です。

いくつのパケットがドロップされて再送されますか?帯域幅がマシンとサーバーの間のどこかで詰まった場合はどうなりますか?どのくらいのデータを送信する必要がありますか?(ファイルのダウンロードの場合、最初にメタデータを送信できますが、多くの場合、これは多くの理由で複雑になる可能性があります)。

これらはすべて、正確に答えることが困難または不可能な質問であり、推測するのが難しい場合があります。

とにかくユーザーがダウンロード時間を正確に認識しないという考えを取り入れてください。正確なプログレスバーを実装する可能性は非常に魅力的ではありません。簡単な方法は、横になっているプログレスバーを作成することです。最良の実装でさえ、最良の推測を継続的に修正しているだけであり、その推測の正確性について保証することはできません。

解決策は、ダウンロード時間の見積もりを懐疑的に扱い、辛抱強く待つことです。

于 2012-04-10T20:59:01.673 に答える