Downloads durch Squid fortsetzen
Prüfen Sie vor dem Fortsetzen Range-Antworten und Objektidentität und unterscheiden Sie Squids Vorabrufrichtlinie von grundsätzlicher Range-Unterstützung.
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.binErsetzen 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:
| Antwort | Bedeutung |
|---|---|
| 206 mit Content-Range | Prüfen, ob der zurückgegebene Bereich der erwarteten Fortsetzung entspricht. |
| 200 | Der Server hat Range möglicherweise ignoriert und die vollständige Repräsentation gesendet. |
| 416 | Der 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 0Ein 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.