Retomar downloads por meio do Squid
Confira as respostas Range e a identidade do objeto antes de retomar um arquivo, e diferencie a pré-busca do Squid do suporte básico a intervalos.
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.binSubstitua 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:
| Resposta | Interpretação |
|---|---|
| 206 com Content-Range | Confira se o intervalo retornado é a continuação esperada. |
| 200 | O servidor pode ter ignorado Range e enviado a representação completa. |
| 416 | O 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 0Um 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.