Atsisiuntimo tęsimas per Squid
Prieš tęsdami patikrinkite Range atsakymus ir objekto tapatumą. Atskirkite Squid išankstinio gavimo politiką nuo įprasto diapazonų palaikymo.
Tęskite tik kai download.part priklauso tai pačiai objekto reprezentacijai, kurios dabar prašysite. Vien failo pavadinimas to nepatvirtina: pradinis serveris nuo pirmo bandymo galėjo pakeisti turinį.
curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.binAbu galinius taškus pakeiskite paslaugomis, kurias turite teisę naudoti. Viešo failo palyginimui, kai vieši tarpiniai serveriai leidžiami, pasirinkite HTTP tašką iš HTTP tarpinių serverių sąrašo. -C - naudoja esamo failo dydį kaip tęsimo vietą. Patikrinkite paskirties atsakymą, o ne laikykite bet kokį gautą turinį trūkstamais baitais:
| Atsakymas | Reikšmė |
|---|---|
| 206 su Content-Range | Patikrinkite, ar grąžintas diapazonas yra lauktas tęsinys. |
| 200 | Serveris galėjo nepaisyti Range ir atsiųsti visą reprezentaciją. |
| 416 | Prašomo diapazono negalima pateikti; nepridėkite klaidos puslapio prie failo. |
Tikrinimo priemonės ir If-Range gali padėti išvengti kintančio ištekliaus versijų sujungimo. Laikykitės programos reprezentacijos taisyklių prieš pasitikėdami baigtu failu.
Squid 6.13 range_offset_limit valdo, kada objektas gaunamas nuo pradžios podėliui, o ne ar klientas gali paprašyti diapazono:
range_offset_limit 0Nulinė riba neleidžia papildomai gauti pradžios vien podėliui užpildyti. Naudingo diapazono persiuntimas neįrašant objekto į podėlį vis tiek gali būti sėkmingas. Įprasto HTTPS CONNECT atveju Range mainai vyksta paskirties TLS viduje; skaitykite tą atsakymą, o ne laikykite matomą Squid objektų podėlio politiką vidinės užklausos valdymu.