
Ich versuche, mit Chrome für Mac eine große Datei herunterzuladen. Das Internet hier ist lückenhaft. Manchmal fällt das Internet aus oder ich muss den Download anhalten.
Mir ist es noch nie wirklich gelungen, einen Download fortzusetzen. Mal schlägt er offen fehl, mal scheint es zu klappen, aber nach 20 Minuten steht es wieder an der gleichen Stelle.
Funktioniert die „Pause“-Funktion also wirklich? Funktionieren diese Download-Manager von Drittanbietern?
Antwort1
Funktioniert die „Pause“-Funktion also wirklich?
Ja,normalerweisees tut.
Das funktioniert folgendermaßen: Immer wenn Sie eine Datei herunterladen, schicken Sie eine HTTP-Anfrage mit der entsprechenden Datei an den Server. Der Server antwortet mit einer HTTP-Nachricht, die aus einem Header und dem eigentlichen Inhalt besteht.
Wenn die Größe der angeforderten Datei bekannt ist, verrät der HTTP-Header Ihrem Browser die „Inhaltslänge“.
Ich versuche beispielsweise, eine PDF-Datei herunterzuladen, und hier ist die Antwort:
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
Wichtig hierbei sind die Content-Length
und die Accept-Ranges
Felder.
Accept-Ranges
bedeutet, dass Sie bei Bedarf stückweise auf die Datei zugreifen könnenContent-Length
gibt die Gesamtgröße der Datei an
Wenn Sie nun einen Download starten, lädt Ihr Browser die Datei wie gewohnt herunter, notiert sich aber natürlich auch die heruntergeladenen Bytes und speichert alles in einer temporären Datei. Wenn Sie dann auf „Pause“ klicken, wird die Verbindung einfach abgebrochen.
Da der Browser jedoch die Anzahl der heruntergeladenen Bytes kennt, kann er beim Klicken auf „Fortsetzen“ über das HTTP-Feld anfordern, dass der Dateidownload genau an dieser Stelle fortgesetzt wird Range
. Dies alles wird imHTTP 1.1-Headerfelddefinitionen:
HTTP-Abrufanfragen mit bedingten oder unbedingten GET-Methoden KÖNNENeinen oder mehrere Teilbereiche der Entität anfordern, statt der gesamten Entität, mithilfe des Range-Anforderungsheaders, der für die Entität gilt, die als Ergebnis der Anforderung zurückgegeben wird.
Das Problem ist, dass Chrome bei fehleranfälligen Verbindungen möglicherweise nicht erkennt, dass die Verbindung unterbrochen wurde, und daher eine falsche Anzahl heruntergeladener Bytes aufzeichnet oder die Verbindung zum Server nicht wiederherstellt. Ich weiß nicht, wie Chrome das intern macht, aber eskönnteEin Download kann nicht fortgesetzt werden, wenn keine erfolgreiche HTTP-Anforderung gesendet werden kann.
Entsprechenddiese Antwort, Chrome könnte theoretisch einen Download als „abgeschlossen“ betrachten, obwohl die TCP-Verbindung manuell geschlossen/abgebrochen wurde. Dies würde das „scheint, als ob es funktioniert“ erklären, das Sie beschrieben haben.
Außerdem unterstützen manche Server den Range
Befehl möglicherweise nicht, obwohl ich glaube, dass das selten vorkommt. Manche Seiten wie Rapidshare scheinen es unmöglich zu machen,mancheDownloads.
Schließlich könnten Sie die Verwendung eines Download-Managers in Betracht ziehen und prüfen, ob das Ihre Probleme löst. Ansonsten ist die Verwendung von BitTorrent zum Herunterladen von Dateien, wenn möglich, wahrscheinlich die sicherere Option als ein einfacher HTTP-Download.
Antwort2
Funktioniert die „Pause“-Funktion also wirklich?
Nein, es funktioniert nicht in Google Chrome. (Die Pause-Schaltfläche funktioniert zwar, aber es sieht so aus, als würde Google Chrome intern nie aufhören, die Datei herunterzuladen, wenn Sie auf die Pause-Schaltfläche klicken. Die Schaltfläche scheint überhaupt nichts zu tun. Dies kann man sehen, wenn die Internetverbindung verloren geht. Dadurch wird Google Chrome beschädigt und der Browser kann nicht fortgesetzt werden.)
Zum Testen habe ich eine einfache Webseite geschrieben, die das Herunterladen von Dateien ermöglicht und auch die Fortsetzung des Downloads unterstützt. Beim Testen des angehaltenen Downloads mit Google Chrome habe ich festgestellt, dass der Browser mir zwar erlaubt, bei einer laufenden Übertragung auf „Anhalten“ zu klicken, aber beim Klicken auf „Fortsetzen“ wird keine HTTP-Anforderung (Bereich) gesendet.
Der Firefox-Browser scheint der Browser zu sein, der die Übertragung anhalten und dann über den HTTP-Range-Header korrekt fortsetzen kann.
Was Download-Manager von Drittanbietern betrifft, habe ich keine Ahnung, es gibt sicherlich welche, die einen HTTP-Download anhalten und fortsetzen können.
Antwort3
Ich persönlich verwende wget und curl sehr häufig.
$ wget -c website.com/file.zip
Wenn die Verbindung dann abbricht, führen Sie einfach denselben Befehl erneut aus, und es wird dort fortgesetzt, wo es aufgehört hat. Wenn wget nicht automatisch mit einem Verbindungsfehler beendet wird, drücken Sie ^C, verwenden Sie die Aufwärtspfeile und führen Sie den Befehl einfach erneut aus, bis der Download abgeschlossen ist. Sie können es in einer Schleife einrichten und den Befehl immer wieder [mit Verzögerung] ausführen lassen, bis ein Exit-Code von 0 [Erfolg] ausgegeben wird.
curl ist auch sehr gut, ich bevorzuge oft curl gegenüber wget, aber wget ist normalerweise einfacher, es sei denn, Sie wissen, was Sie tun.
Antwort4
Ich füge meine 2c aus dem Jahr 2020 hinzu, Chrome 85.0.4183.102
Habe mit dem Herunterladen einer 350 MB großen Datei über das schlechte 4G begonnen, brauchte aber Bandbreite für andere Sachen, also habe ich bei 120 MB pausiert, die Geschwindigkeit lag davor bei etwa 1-2 MB/s. Als ich pausierte, sah es bei meinen anderen Webaktivitäten immer noch so aus, als ob die Bandbreite niedrig wäre. Als ich nach ~20 Minuten den Download fortsetzte, machte er 5-10 große Sprünge von 120 MB auf 350 MB und die Datei wurde heruntergeladen. Ich vermute also, dass Chrome intern immer noch herunterlädt.