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-LengthAccept-Ranges字段。

  • Accept-Ranges意味著您可以根據需要逐部分存取該文件
  • Content-Length告訴你文件的整體大小

現在,當您開始下載時,您的瀏覽器將照常下載文件,但它當然也會追蹤下載的位元組並將所有內容儲存在臨時文件中。如果您隨後按一下“暫停”,連線將被中止。

但是,由於瀏覽器知道下載的位元組數,因此當您按一下「繼續」時,它可以透過 HTTP 欄位請求在此時繼續檔案下載Range。這一切都在HTTP 1.1 標頭欄位定義:

使用條件或無條件 GET 方法的 HTTP 檢索請求可以請求實體的一個或多個子範圍,而不是整個實體,使用 Range 請求標頭,該標頭適用於作為請求結果傳回的實體。


棘手的是,當你的連線容易出錯時,Chrome可能沒有意識到連線遺失,因此記錄了錯誤的下載位元組數,甚至無法恢復與伺服器的連線。我不知道 Chrome 這樣做的內部原理,但它可能如果無法傳送成功的 HTTP 請求,則無法恢復下載。

根據這個答案,理論上,即使 TCP 連線被手動關閉/中止,Chrome 也可以將下載視為「完成」。這可以解釋您所描述的“似乎正在發揮作用”。

另外,某些伺服器可能不支援該Range命令,儘管我認為這種情況很少見。有些網站(例如 Rapidshare)似乎無法恢復一些下載。

最後,您可以考慮使用下載管理器,看看是否可以解決您的問題。除此之外,如果可能的話,使用 BitTorrent 下載檔案可能比普通 HTTP 下載更安全。

答案2

那麼,「暫停」功能真的有用嗎?

不,它在 Google Chrome 中不起作用。 (暫停按鈕可以工作,但當您單擊“暫停”按鈕時,Google Chrome 瀏覽器的內部似乎永遠不會停止下載文件。該按鈕似乎根本不執行任何操作。當互聯網連接丟失時可以看到這一點。

為了測試,我編寫了一個簡單的網頁,允許下載文件,並且還支援恢復下載。測試暫停下載如何與 Google Chrome 配合使用,我發現實際上瀏覽器允許我在正在進行的傳輸上單擊“暫停”,但是單擊“恢復”不會發送任何 HTTP(範圍)請求。

Firefox 瀏覽器似乎是能夠暫停傳輸然後透過 HTTP 範圍標頭正確恢復的瀏覽器。

關於第 3 方下載管理器,我不知道,肯定會有一些能夠暫停和恢復 HTTP 下載。

答案3

我個人經常使用wget和curl。

$ wget -c website.com/file.zip

然後,如果連線退出,只需再次執行相同的命令,它將從中斷處繼續。如果 wget 沒有因連接錯誤而自動退出,請 ^C 它,然後使用向上箭頭並執行命令,直到完成下載。您可以將其設為循環,並讓它一遍又一遍地運行該命令[有延遲],直到給出 0 退出代碼[成功]。

curl 也非常好,我通常更喜歡curl 而不是wget,但wget 通常更容易,除非您知道自己在做什麼。

答案4

從 2020 年開始加入我的 2c,Chrome 85.0.4183.102

開始透過較差的 4G 下載 350MB 文件,但需要頻寬用於其他內容,因此在 120MB 時暫停,在此之前速度約為 1-2MB/s。當我暫停時,我的其他網路活動看起來仍然頻寬較低。當我大約 20 分鐘後恢復下載時,它從 120MB 到 350MB 發生了 5..10 個巨大的跳躍,並且檔案被下載。所以我懷疑 Chrome 內部仍在下載。

相關內容