O recurso “pausa” do gerenciador de downloads do Chrome realmente funciona?

6

Estou tentando fazer o download de um arquivo grande com o Google Chrome para Mac. A internet aqui é irregular. Às vezes a Internet cai, ou eu preciso pausar o download.

Nunca consegui retomar o download. Às vezes falha abertamente, às vezes parece que está funcionando, mas depois de 20 minutos está no mesmo lugar.

Então, o recurso "pause" realmente funciona? Esses gerenciadores de downloads de terceiros funcionam?

    
por nute 07.09.2011 / 16:38

3 respostas

10

So, does the "pause" feature really work?

Sim, normalmente funciona.

Funciona da seguinte maneira: Sempre que você faz o download de um arquivo, você envia uma solicitação HTTP para o servidor com o arquivo em questão. O servidor responde com uma mensagem HTTP, que consiste em um cabeçalho e o conteúdo real.

Se o tamanho do arquivo solicitado é conhecido, o cabeçalho HTTP revela o "Content Length" para o seu navegador.

Por exemplo, estou tentando fazer o download de um arquivo PDF e esta é a resposta:

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

O que é importante sobre isso são os campos Content-Length e Accept-Ranges .

  • Accept-Ranges significa que você pode acessar o arquivo parte por peça, se necessário
  • Content-Length informa o tamanho total do arquivo

Agora, quando você iniciar um download, o navegador baixará o arquivo como de costume, mas, é claro, também acompanhará os bytes baixados e armazenará tudo em um arquivo temporário. Se você clicar em "pausar", a conexão será apenas cancelada.

No entanto, como o navegador sabe o número de bytes baixados, quando você clica em "continuar", ele pode solicitar que o download do arquivo continue exatamente nesse ponto, com o campo HTTP Range . Isso é tudo explicado nas Definições de campo de cabeçalho HTTP 1.1 :

HTTP retrieval requests using conditional or unconditional GET methods MAY request one or more sub-ranges of the entity, instead of the entire entity, using the Range request header, which applies to the entity returned as the result of the request.

O mais complicado é que, quando sua conexão está propensa a erros, o Chrome pode não perceber que houve uma perda de conexão, portanto, registrar um número errado de bytes baixados ou até mesmo falhar em retomar a conexão com o servidor. Eu não sei sobre o funcionamento interno do Chrome, mas pode não ser capaz de retomar um download se ele não puder enviar uma solicitação HTTP bem-sucedida.

De acordo com esta resposta , o Chrome teoricamente poderia considerar um download como" concluído ", mesmo que a conexão TCP tenha sido fechada / interrompida manualmente. Isso explicaria o "parece que está funcionando" que você descreveu.

Além disso, alguns servidores podem não suportar o comando Range , embora eu ache que isso é raro. Alguns sites como o Rapidshare parecem impossibilitar a retomada de alguns downloads.

Por fim, você pode considerar usar um gerenciador de downloads e ver se isso resolve seus problemas. Além disso, usar o BitTorrent para baixar arquivos, se possível, é provavelmente a opção mais segura do que um simples download HTTP.

    
por 07.09.2011 / 17:02
1

Eu pessoalmente uso o wget e enrolo muito.

$ wget -c website.com/file.zip

Em seguida, se a conexão for encerrada, execute o mesmo comando novamente e continue de onde parou. Se wget não for automaticamente encerrado com um erro de conexão, use-o e use as setas para cima e simplesmente execute o comando até concluir o download. Você pode configurá-lo em um loop e executá-lo repetidamente [com um atraso] até que ele forneça um código de saída 0 [Success].

O

curl também é muito bom, muitas vezes prefiro enrolar o wget, mas o wget geralmente é mais fácil, a menos que você saiba o que está fazendo.

    
por 07.09.2011 / 18:28
1

So, does the "pause" feature really work?

Não, não funciona no Google Chrome. (Bem, o botão de pausa funciona, mas parece que o interno do Google Chrome nunca pára de baixar o arquivo quando você clica no botão Pausa. O botão parece não fazer nada. Isso pode ser visto quando a conexão com a Internet é perdida. quebra o Google Chrome e o navegador não pode continuar).

Para testar, eu escrevi uma página simples que permite baixar arquivos e também suporta retomar o download. Testando como o download pausado acontece com o Google Chrome, descobri que, na verdade, o navegador permite que eu clique em "Pausar" em uma transferência em andamento, mas clicar em "Continuar" não envia nenhuma solicitação HTTP (intervalo).

O navegador Firefox parece ser o navegador capaz de pausar a transferência e retomar o cabeçalho do intervalo HTTP corretamente.

Com relação a gerentes de download de terceiros, não tenho idéia, com certeza haverá alguns que podem pausar e retomar um download de HTTP.

    
por 22.07.2015 / 16:58