
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
파일의 전체 크기를 알려줍니다
이제 다운로드를 시작하면 브라우저는 평소대로 파일을 다운로드하지만 다운로드된 바이트를 추적하고 모든 것을 임시 파일에 저장합니다. 그런 다음 "일시 중지"를 클릭하면 연결이 중단됩니다.
그러나 브라우저는 다운로드된 바이트 수를 알고 있으므로 "재개"를 클릭하면 HTTP 필드를 사용하여 정확히 이 시점에서 파일 다운로드가 계속되도록 요청할 수 있습니다 Range
. 이 내용은 모두HTTP 1.1 헤더 필드 정의:
조건부 또는 무조건 GET 메소드를 사용하는 HTTP 검색 요청은 다음과 같습니다.엔터티의 하나 이상의 하위 범위를 요청합니다., 전체 엔터티 대신 요청 결과로 반환된 엔터티에 적용되는 Range 요청 헤더를 사용합니다.
까다로운 점은 연결에 오류가 발생하기 쉬운 경우 Chrome이 연결 끊김을 인식하지 못해 잘못된 다운로드 바이트 수를 기록하거나 서버 연결을 재개하지 못할 수도 있다는 것입니다. 이 작업을 수행하는 Chrome 내부에 대해서는 모르지만~할 것 같다성공적인 HTTP 요청을 보낼 수 없으면 다운로드를 재개할 수 없습니다.
에 따르면이 답변, TCP 연결이 수동으로 닫히거나 중단되더라도 Chrome은 이론적으로 다운로드를 '완료'로 간주할 수 있습니다. 이것은 당신이 설명한 "작동하는 것 같다"는 것을 설명합니다.
또한 일부 서버에서는 Range
명령을 지원하지 않을 수도 있지만 이는 드문 일이라고 생각합니다. Rapidshare와 같은 일부 사이트에서는 재개가 불가능한 것 같습니다.일부다운로드.
마지막으로 다운로드 관리자 사용을 고려하여 문제가 해결되는지 확인할 수 있습니다. 그 외에는 가능하다면 BitTorrent를 사용하여 파일을 다운로드하는 것이 일반 HTTP 다운로드보다 더 안전한 옵션일 것입니다.
답변2
그렇다면 "일시 중지" 기능이 실제로 작동합니까?
아니요, Google Chrome에서는 작동하지 않습니다. (일시중지 버튼은 작동하지만 Google Chrome 내부에서는 일시중지 버튼을 클릭해도 파일 다운로드가 멈추지 않는 것처럼 보입니다. 버튼은 전혀 작동하지 않는 것 같습니다. 이는 인터넷 연결이 끊어졌을 때 볼 수 있습니다. Chrome이 중단되고 브라우저를 다시 시작할 수 없습니다.)
테스트하기 위해 파일을 다운로드할 수 있고 다운로드 재개도 지원하는 간단한 웹페이지를 작성했습니다. 일시 중지된 다운로드가 Google Chrome에서 어떻게 진행되는지 테스트하면서 실제로 브라우저에서 진행 중인 전송에 대해 "일시 중지"를 클릭할 수 있지만 "재개"를 클릭해도 HTTP(범위) 요청이 전송되지 않는다는 사실을 발견했습니다.
Firefox 브라우저는 전송을 일시 중지한 다음 HTTP 범위 헤더를 통해 올바르게 다시 시작할 수 있는 브라우저인 것 같습니다.
제3자 다운로드 관리자에 관해서는 잘 모르겠습니다. 확실히 HTTP 다운로드를 일시 중지하고 재개할 수 있는 일부가 있을 것입니다.
답변3
저는 개인적으로 wget과 컬을 많이 사용합니다.
$ wget -c website.com/file.zip
그런 다음 연결이 종료되면 동일한 명령을 다시 실행하면 중단된 부분부터 계속됩니다. 연결 오류로 인해 wget이 자동으로 종료되지 않으면 ^C하고 위쪽 화살표를 사용하여 다운로드가 완료될 때까지 명령을 실행하세요. 루프에서 설정하고 0 종료 코드 [성공]이 나올 때까지 [지연을 두고] 명령을 계속해서 실행하도록 할 수 있습니다.
컬도 매우 좋습니다. 저는 종종 wget보다 컬을 선호하지만, 자신이 무엇을 하고 있는지 알지 못하면 일반적으로 wget이 더 쉽습니다.
답변4
2020년부터 2c 추가, Chrome 85.0.4183.102
열악한 4G를 통해 350MB 파일을 다운로드하기 시작했지만 다른 작업을 위한 대역폭이 필요했기 때문에 120MB에서 일시 중지되었으며 그 전에는 속도가 약 1-2MB/s였습니다. 일시 중지했을 때 다른 웹 활동은 여전히 대역폭이 낮은 것처럼 보였습니다. 20분 정도 후에 다운로드를 다시 시작했을 때 120MB에서 350MB로 5..10배나 크게 증가했고 파일이 다운로드되었습니다. 따라서 Chrome이 내부적으로 여전히 다운로드되는 것으로 의심됩니다.