Аднаўленне загрузак праз Squid
Праверце Range-адказы і тоеснасць аб’екта перад аднаўленнем файла ды адрознівайце палітыку папярэдняй загрузкі Squid ад базавай падтрымкі дыяпазонаў.
Аднаўляйце загрузку толькі калі download.part належыць да таго самага прадстаўлення аб’екта, якое вы зараз запытаеце. Аднаго імя файла недастаткова: крыніца магла змяніць змест пасля першай спробы.
curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.binЗамяніце абодва канцавыя пункты сэрвісамі, якімі вам дазволена карыстацца. Для параўнання агульнадаступнага файла там, дзе публічныя проксі дазволеныя, вазьміце HTTP-вузел са спіса HTTP-проксі. -C - выкарыстоўвае памер наяўнага файла як пункт працягу. Вывучыце адказ мэты, а не лічыце любое атрыманае цела адсутнымі байтамі:
| Адказ | Значэнне |
|---|---|
| 206 з Content-Range | Праверце, што вернуты дыяпазон — чаканы працяг. |
| 200 | Сервер мог праігнараваць Range і даслаць поўнае прадстаўленне. |
| 416 | Запытаны дыяпазон немагчыма задаволіць; не дапісвайце старонку памылкі ў файл. |
Валідатары і If-Range дапамагаюць пазбегнуць склейвання розных версій зменлівага рэсурсу. Выконвайце правілы прадстаўлення праграмы, перш чым давяраць гатоваму файлу.
У Squid 6.13 range_offset_limit вызначае, калі аб’ект загружаецца з пачатку для кэшавання, а не ці можа кліент запытаць дыяпазон:
range_offset_limit 0Нулявая мяжа выключае лішнюю загрузку пачатку толькі дзеля запаўнення кэша. Перадача карыснага дыяпазону без кэшавання аб’екта ўсё роўна можа быць паспяховай. Пры звычайным HTTPS CONNECT абмен Range знаходзіцца ўнутры TLS мэты; чытайце гэты адказ, а не ўспрымайце бачную палітыку аб’ектнага кэша Squid як кіраванне ўнутраным запытам.