마루옵스서버 · 네트워크 · AI 기술 노트

소개문의

Cloudflare Origin Range Requests: 대용량 파일의 부분 요청 캐시 개선

Wikimedia EQIAD 시설의 네트워크 장비와 광케이블

참고 사진 · Wikimedia EQIAD 시설의 네트워크 장비와 광케이블 · 사진: RobH / 원본 / CC BY-SA 3.0 · 목록용 크기 조정

Cloudflare가 대용량 파일의 부분 요청을 처리하는 Origin Range Requests를 모든 요금제에서 직접 설정할 수 있도록 제공한다고 발표했습니다. 사용자가 파일 일부만 요청했을 때 원본에서 불필요하게 큰 구간을 가져오는 낭비를 줄이는 방향입니다. Cloudflare 공식 발표

HTTP Range 요청은 동영상 탐색이나 중단된 다운로드 재개처럼 파일 일부가 필요할 때 사용합니다. 캐시에 적중했더라도 원본에서 더 큰 범위를 받아 왔다면 전체 트래픽과 저장장치 작업량은 커질 수 있어요.

이 글의 목차

파일의 일부만 요청하는 HTTP Range

동영상에서 중간 지점으로 이동하거나 큰 다운로드를 이어받을 때는 파일 전체 대신 특정 바이트 구간만 필요할 수 있습니다. HTTP Range는 요청에 그 범위를 지정하는 방식입니다. 원본이 지원하면 응답은 보통 206 Partial Content와 Content-Range로 반환 구간을 알려 줍니다. 전체 파일을 보내는 200 응답과 실제로 어떤 구간을 보냈는지 구분해서 읽어야 합니다.

예를 들어 수 기가바이트 파일에서 짧은 구간만 읽는 사용자가 많다면, 원본에서 매번 전체 파일을 가져오는 방식은 비효율적입니다. 그렇다고 구간을 지나치게 작게 나누면 원본 요청과 저장장치 작업이 늘 수 있어요. 캐시가 이미 가진 구간과 아직 내려받는 중인 구간을 조정하는 일이 대용량 전송에서 중요해지는 배경입니다.

같은 파일 버전의 바이트만 합쳐야 합니다

부분 응답을 조합할 때는 앞부분과 뒷부분이 같은 버전의 파일인지 확인해야 합니다. 다운로드 도중 원본 내용이 바뀌었는데 이전 캐시 조각과 새 조각을 합치면 정상 파일이 되지 않을 수 있습니다. ETag 같은 표현 식별자와 전체 길이를 검토하는 이유입니다. 단순히 빠르게 내려주는 것보다 올바른 구간을 일관되게 조합하는 것이 우선입니다.

또한 응답의 압축 여부가 바뀌면 같은 바이트 번호가 같은 내용을 가리키지 않을 수 있습니다. 캐시 기능은 원본의 Range 지원과 응답 헤더, 변환 정책을 함께 확인하며 적용해야 합니다. 기능을 켰다고 원래 캐시할 수 없는 개인정보 응답이 캐시 대상이 되는 것은 아니며, 기존 접근 통제와 캐시 적격 조건도 그대로 검토합니다.

모델 파일이나 디스크 이미지 배포에서 확인할 값

가상의 이미지 배포 서버라면 처음부터 받기, 중간부터 이어받기, 같은 파일을 여러 사용자가 동시에 받기를 나누어 시험합니다. 요청한 구간의 길이와 실제 받은 길이를 비교하고 파일 전체의 무결성도 확인합니다. 반복 시험에서는 캐시가 비어 있는 경우와 이미 일부 구간이 저장된 경우를 분리해야 결과를 해석하기 쉽습니다.

원본에서 보낸 바이트 수를 사용자가 받은 바이트 수와 함께 기록하면 불필요한 상위 전송을 찾을 수 있습니다. 하지만 비율 하나만 낮아졌다고 성공으로 판정하지 않습니다. 첫 응답 지연과 원본 요청 수, 실패율도 같이 봅니다. 특히 원본 파일을 갱신한 직후에 예전 구간이 섞이지 않는지를 확인하면 속도 시험만으로 놓칠 오류를 찾는 데 도움이 됩니다.

부분 다운로드 시험 항목

  • 정상 요청과 Range 요청의 상태 코드·Content-Range를 확인합니다.
  • 첫 요청과 반복 요청의 원본 트래픽을 각각 측정합니다.
  • 탐색·재개·동시 다운로드에서 응답이 중간에 끊기지 않는지 봅니다.

기존 캐시 정책을 기록하고 한 경로부터 적용하면 비교하기 편합니다. 원본 부하와 사용자 지연이 함께 개선되는지 확인한 뒤 범위를 넓힙니다.

발표문 기준일: 2026-10-23 · 확인일: 2026-10-24