Возобновляйте загрузку, только если 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 как управление внутренним запросом.

Похожие статьи