Setzen Sie einen Download nur fort, wenn download.part zu derselben Objektrepräsentation gehört, die Sie jetzt anfordern. Ein Dateiname allein belegt das nicht: Der Ursprung kann den Inhalt seit dem ersten Versuch geändert haben.

curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.bin

Ersetzen Sie beide Endpunkte durch Dienste, die Sie nutzen dürfen. Für einen Vergleich öffentlicher Dateien, bei dem öffentliche Proxys erlaubt sind, wählen Sie einen HTTP-Endpunkt aus der HTTP-Proxy-Liste. -C - verwendet die vorhandene Dateigröße als Fortsetzungspunkt. Prüfen Sie die Zielantwort, statt jeden empfangenen Körper für die fehlenden Bytes zu halten:

AntwortBedeutung
206 mit Content-RangePrüfen, ob der zurückgegebene Bereich der erwarteten Fortsetzung entspricht.
200Der Server hat Range möglicherweise ignoriert und die vollständige Repräsentation gesendet.
416Der angeforderte Bereich ist nicht erfüllbar; hängen Sie die Fehlerseite nicht an.

Validatoren und If-Range können verhindern, dass Versionen einer veränderlichen Ressource zusammengefügt werden. Beachten Sie die Repräsentationsregeln der Anwendung, bevor Sie der fertigen Datei vertrauen.

In Squid 6.13 steuert range_offset_limit, wann ein Objekt zum Cachen von Anfang an abgerufen wird, nicht ob ein Client einen Bereich anfordern darf:

range_offset_limit 0

Ein Limit von null vermeidet zusätzliches Abrufen des Anfangs nur zum Füllen des Caches. Ein nützlicher Bereich kann auch ohne Cachen des Objekts erfolgreich weitergeleitet werden. Bei gewöhnlichem HTTPS-CONNECT liegt der Range-Austausch innerhalb des Ziel-TLS; lesen Sie diese Zielantwort, statt Squids sichtbare Objekt-Cache-Richtlinie als Kontrolle der inneren Anfrage zu behandeln.

Ähnliche Artikel