Como funcionam os downloads com pausa?

17

Eu uso o Internet Download Manager (IDM) para fazer o download de dados, e notei que na janela de progresso de download, ele mostra se um download é ou não pausável (pode ser retomado). Normalmente, os sites de compartilhamento de arquivos não permitem que a transferência seja retomada se a conexão for interrompida.

Então a questão é esta: como isso funciona? É alguma configuração que é feita no sever? Como isso difere de downloads de torrent, onde o download é sempre capaz de continuar.

    
por Rafay 06.09.2013 / 18:22

2 respostas

24

De uma perspectiva de codificação, um download é apenas uma matriz de bytes incluída no fluxo de resposta HTTP.

O protocolo HTTP 1.1 (ver página 30) inclui um campo no cabeçalho chamado 'Intervalo', que permite que o pedido especifique o byte offset e o comprimento da resposta solicitada.

Então, em essência, você pode dizer: "me dê o objeto HTTP neste URL, mas eu quero apenas os 1024º - 4096º bytes". O navegador do cliente, em seguida, acrescenta o fluxo de bytes à parte do arquivo já baixado. O cliente pode dizer onde é necessário retomar simplesmente verificando o tamanho do arquivo já baixado e incrementando-o para determinar o deslocamento necessário.

Quanto ao modo como seu gerenciador de downloads pode dizer, ele envia uma solicitação HTTP "HEAD". Se o código de resposta for 206 (conteúdo parcial), o fluxo HTTP suportará a retomada.

    
por 06.09.2013 / 18:41
1

Isso pode ser feito com um cookie persistente , que não deve ser confundido com um cookie de sessão ou você pode usar [Viewstate] se o site for criado no ASP.NET, no entanto isso não é uma boa prática. Frank Thomas tem a melhor resposta.

    
por 06.09.2013 / 18:35