Squid를 통해 다운로드 이어받기
파일을 이어받기 전에 Range 응답과 객체가 같은지 확인하고, Squid의 미리 가져오기 정책과 기본 Range 지원을 구분하세요.
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 -는 기존 파일 크기를 이어받기 시작점으로 씁니다. 반환된 본문을 무조건 빠진 바이트로 간주하지 말고 목적지 응답을 확인하세요.
| 응답 | 해석 |
|---|---|
| Content-Range가 있는 206 | 반환된 범위가 예상한 이어받기 부분인지 확인하세요. |
| 200 | 서버가 Range를 무시하고 전체 표현을 보냈을 수 있습니다. |
| 416 | 요청 범위를 충족할 수 없습니다. 오류 페이지를 파일에 덧붙이지 마세요. |
검증자와 If-Range는 바뀌는 리소스의 다른 버전을 이어 붙이는 일을 피하는 데 도움이 됩니다. 완성된 파일을 신뢰하기 전에 애플리케이션의 표현 처리 규칙을 따르세요.
Squid 6.13의 range_offset_limit은 캐싱을 위해 언제 객체를 처음부터 가져올지 제어하며, 클라이언트의 범위 요청 허용 여부를 정하지는 않습니다.
range_offset_limit 0제한이 0이면 캐시를 채우려고 앞부분을 추가로 가져오지 않습니다. 객체를 캐싱하지 않아도 유용한 범위를 전달하는 일은 성공할 수 있습니다. 일반 HTTPS CONNECT에서는 Range 교환이 목적지 TLS 내부에 있으므로 그 목적지 응답을 읽으세요. Squid에서 보이는 객체 캐시 정책을 내부 요청의 제어로 간주해서는 안 됩니다.