Riprendere download attraverso Squid
Controlla le risposte Range e l’identità dell’oggetto prima di riprendere un file, distinguendo il prefetch di Squid dal supporto di base agli intervalli.
Usa la ripresa solo quando download.part appartiene alla stessa rappresentazione dell’oggetto che richiederai ora. Il nome del file non basta: l’origine potrebbe aver cambiato il contenuto dal primo tentativo.
curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.binSostituisci entrambi gli endpoint con servizi che sei autorizzato a usare. Per un confronto su un file pubblico dove i proxy pubblici sono consentiti, scegli un endpoint HTTP dalla lista di proxy HTTP. -C - usa la dimensione del file esistente come punto di ripresa. Esamina la risposta della destinazione invece di considerare qualsiasi corpo ricevuto come i byte mancanti:
| Risposta | Interpretazione |
|---|---|
| 206 con Content-Range | Controlla che l’intervallo restituito sia la continuazione attesa. |
| 200 | Il server potrebbe aver ignorato Range e inviato la rappresentazione completa. |
| 416 | L’intervallo richiesto non è soddisfacibile; non aggiungere al file la pagina di errore. |
I validatori e If-Range possono evitare di unire versioni di una risorsa che cambia. Segui le regole di rappresentazione dell’applicazione prima di fidarti del file completato.
In Squid 6.13, range_offset_limit regola quando recuperare un oggetto dall’inizio per memorizzarlo in cache, non se il client possa chiedere un intervallo:
range_offset_limit 0Un limite zero evita di recuperare un prefisso aggiuntivo solo per riempire la cache. Inoltrare un intervallo utile senza memorizzare l’oggetto può comunque riuscire. Con un normale CONNECT HTTPS, lo scambio Range è dentro il TLS della destinazione: leggi quella risposta invece di trattare la politica visibile della cache oggetti di Squid come controllo della richiesta interna.