Chrome のダウンロード マネージャーの「一時停止」機能は本当に機能しますか?

Chrome のダウンロード マネージャーの「一時停止」機能は本当に機能しますか?

Mac 版 Chrome で大きなファイルをダウンロードしようとしています。ここのインターネットは不安定です。時々インターネットがダウンしたり、ダウンロードを一時停止したりする必要があります。

ダウンロードを再開することに成功したことはありません。明らかに失敗することもあれば、うまくいっているように見えることもありますが、20 分後には同じ場所に戻ってしまいます。

では、「一時停止」機能は本当に機能するのでしょうか? サードパーティのダウンロード マネージャーは機能しますか?

答え1

それで、「一時停止」機能は本当に機能するのでしょうか?

はい、通常はします。

仕組みは次のとおりです。ファイルをダウンロードするたびに、そのファイルを含む HTTP リクエストをサーバーに送信します。サーバーは、ヘッダーと実際のコンテンツで構成される HTTP メッセージで応答します。

要求されたファイルのサイズがわかっている場合、HTTP ヘッダーによって「コンテンツの長さ」がブラウザに表示されます。

たとえば、PDF ファイルをダウンロードしようとすると、次のような応答が返されます。

charon:~ werner$ curl -I www.ready.gov/business/_downloads/sampleplan.pdf
HTTP/1.1 200 OK
Server: Apache
ETag: "230b73353fc7715f06267967df11be04:1241094925"
Last-Modified: Wed, 29 Apr 2009 20:56:46 GMT
Accept-Ranges: bytes
Content-Length: 293125
Content-Type: application/pdf
Date: Wed, 07 Sep 2011 14:49:33 GMT
Connection: keep-alive

ここで重要なのは、Content-LengthおよびAccept-Rangesフィールドです。

  • Accept-Ranges必要に応じて、ファイルに部分ごとにアクセスできることを意味します。
  • Content-Lengthファイル全体のサイズを示します

ダウンロードを開始すると、ブラウザは通常どおりファイルをダウンロードしますが、もちろんダウンロードされたバイト数も記録し、すべてを一時ファイルに保存します。その後、「一時停止」をクリックすると、接続は中止されます。

しかし、ブラウザはダウンロードされたバイト数を知っているので、「再開」をクリックすると、HTTPRangeフィールドを使用して、ファイルのダウンロードをこの時点で続行するように要求できます。これはすべてHTTP 1.1 ヘッダーフィールドの定義:

条件付きまたは無条件のGETメソッドを使用したHTTP取得リクエストは、エンティティの1つ以上のサブ範囲を要求するエンティティ全体ではなく、リクエストの結果として返されるエンティティに適用される Range リクエスト ヘッダーを使用します。


厄介なのは、接続にエラーが発生しやすい場合、Chromeは接続が失われたことを認識できず、ダウンロードされたバイト数が間違って記録されたり、サーバーへの接続を再開できなかったりする可能性があることです。Chromeの内部でこれがどのように行われるかはわかりませんが、かもしれない正常な HTTP リクエストを送信できない場合は、ダウンロードを再開できません。

によるとこの答え理論的には、TCP 接続が手動で閉じられたり中止されたりしても、Chrome はダウンロードを「完了」と見なすことができます。これにより、あなたが説明した「動作しているように見える」という現象が説明できます。

また、一部のサーバーではこのRangeコマンドをサポートしていない可能性がありますが、これはまれだと思います。Rapidshareなどの一部のサイトでは再開できないようです。いくつかのダウンロード。

最後に、ダウンロード マネージャーの使用を検討して、問題が解決するかどうかを確認してください。それ以外では、可能であれば BitTorrent を使用してファイルをダウンロードする方が、通常の HTTP ダウンロードよりも安全なオプションである可能性があります。

答え2

それで、「一時停止」機能は本当に機能するのでしょうか?

いいえ、Google Chrome では動作しません。(一時停止ボタンは動作しますが、一時停止ボタンをクリックしても Google Chrome の内部ではファイルのダウンロードが停止されないようです。ボタンは何もしないようです。これはインターネット接続が失われたときに見られます。これにより Google Chrome が破損し、ブラウザを再開できなくなります)。

テストのために、ファイルのダウンロードを可能にし、ダウンロードの再開もサポートする簡単な Web ページを作成しました。一時停止したダウンロードが Google Chrome でどのように行われるかをテストしたところ、実際にはブラウザで進行中の転送中に「一時停止」をクリックすることはできますが、「再開」をクリックしても HTTP (範囲) 要求は送信されないことがわかりました。

Firefox ブラウザは、HTTP 範囲ヘッダーを介して転送を一時停止し、再開することができるブラウザのようです。

サードパーティのダウンロード マネージャーについてはわかりませんが、HTTP ダウンロードを一時停止および再開できるものがいくつかあるはずです。

答え3

私は個人的に wget と curl をよく使います。

$ wget -c website.com/file.zip

その後、接続が終了したら、同じコマンドをもう一度実行すると、中断したところから続行されます。wget が接続エラーで自動的に終了しない場合は、^C で終了し、上矢印を使用して、ダウンロードが完了するまでコマンドを繰り返し実行します。ループに設定して、終了コード 0 [成功] を返すまで、コマンドを [遅延付きで] 何度も実行するように設定することもできます。

curl も非常に優れています。私はよく wget よりも curl を好みますが、何をしているのかわかっていない限り、通常は wget の方が簡単です。

答え4

2020年から2cを追加、Chrome 85.0.4183.102

貧弱な 4G で 350MB のファイルをダウンロードし始めましたが、他の作業に帯域幅が必要だったので、120MB で一時停止しました。その前の速度は 1 ~ 2MB/秒でした。一時停止したとき、他の Web アクティビティはまだ低帯域幅のように見えました。約 20 分後にダウンロードを再開すると、120MB から 350MB に 5 ~ 10 倍の大きなジャンプがあり、ファイルがダウンロードされました。したがって、Chrome は内部的にまだダウンロードしていると思われます。

関連情報