Wznawianie pobierania przez Squid
Sprawdź odpowiedzi Range i tożsamość obiektu przed wznowieniem pliku oraz odróżnij wstępne pobieranie Squida od podstawowej obsługi zakresów.
Wznawiaj tylko wtedy, gdy download.part należy do tej samej reprezentacji obiektu, o którą teraz poprosisz. Sama nazwa pliku tego nie potwierdza: serwer źródłowy mógł zmienić zawartość od pierwszej próby.
curl --proxy http://proxy.example:3128 --noproxy '' --connect-timeout 5 --max-time 60 -C - --output download.part http://files.example/test.binZastąp oba punkty końcowe usługami, których wolno ci używać. Do porównania publicznego pliku tam, gdzie publiczne proxy są dozwolone, wybierz punkt HTTP z listy proxy HTTP. -C - używa rozmiaru istniejącego pliku jako punktu wznowienia. Zbadaj odpowiedź celu zamiast traktować dowolną otrzymaną treść jako brakujące bajty:
| Odpowiedź | Znaczenie |
|---|---|
| 206 z Content-Range | Sprawdź, czy zwrócony zakres jest oczekiwaną kontynuacją. |
| 200 | Serwer mógł zignorować Range i wysłać całą reprezentację. |
| 416 | Żądany zakres jest niemożliwy do spełnienia; nie dopisuj strony błędu do pliku. |
Walidatory i If-Range mogą pomóc uniknąć łączenia wersji zmieniającego się zasobu. Przed zaufaniem ukończonemu plikowi stosuj reguły reprezentacji aplikacji.
W Squid 6.13 range_offset_limit określa, kiedy obiekt jest pobierany od początku do pamięci podręcznej, a nie czy klient może zażądać zakresu:
range_offset_limit 0Limit zerowy zapobiega dodatkowemu pobieraniu początku tylko po to, by wypełnić cache. Przekazanie użytecznego zakresu bez zapisania obiektu w cache nadal może się udać. Przy zwykłym HTTPS CONNECT wymiana Range jest wewnątrz TLS celu; czytaj tę odpowiedź zamiast traktować widoczną politykę cache obiektów Squida jako sterowanie wewnętrznym żądaniem.