Use a retomada somente quando download.part pertence à mesma representação do objeto que você vai solicitar agora. O nome do arquivo não basta: a origem pode ter mudado o conteúdo desde a primeira tentativa.

curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.bin

Substitua os dois endpoints por serviços que você tem autorização para usar. Para comparar um arquivo público quando proxies públicos são permitidos, escolha um endpoint HTTP da lista de proxies HTTP. -C - usa o tamanho do arquivo existente como ponto de retomada. Inspecione a resposta do destino em vez de tratar qualquer corpo recebido como os bytes que faltam:

RespostaInterpretação
206 com Content-RangeConfira se o intervalo retornado é a continuação esperada.
200O servidor pode ter ignorado Range e enviado a representação completa.
416O intervalo solicitado não pode ser atendido; não acrescente a página de erro ao arquivo.

Validadores e If-Range podem ajudar a evitar a junção de versões de um recurso que muda. Siga as regras de representação do aplicativo antes de confiar no arquivo concluído.

No Squid 6.13, range_offset_limit determina quando buscar um objeto desde o início para colocá-lo em cache, não se o cliente pode pedir um intervalo:

range_offset_limit 0

Um limite zero evita buscar um prefixo extra apenas para preencher o cache. Encaminhar um intervalo útil sem armazenar o objeto ainda pode ser bem-sucedido. No CONNECT HTTPS comum, a troca de Range fica dentro do TLS do destino; leia essa resposta em vez de tratar a política visível do cache de objetos do Squid como controle da requisição interna.

Artigos relacionados