<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e" -->

---
title: Origin Range Requests: Serving large files without...
description: Cloudflare rebuilt how its cache handles HTTP range requests, replacing a manually tuned range-size setting with fixed-size cache chunks from its Pingora...
canonical: https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Origin Range Requests: Serving large files without range-request tuning | daily.dev
og:description: Cloudflare rebuilt how its cache handles HTTP range requests, replacing a manually tuned range-size setting with fixed-size cache chunks from its Pingora...
og:url: https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e
og:image: https://api.daily.dev/og/posts/Sy0inca3e.png
og:image:alt: Origin Range Requests: Serving large files without range-request tuning
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Origin Range Requests: Serving large files without range-request tuning

**[Cloudflare](https://daily.dev/sources/cloudflare)** · 9 min read · 29 upvotes · 1 comments

## Summary

Cloudflare rebuilt how its cache handles HTTP range requests, replacing a manually tuned range-size setting with fixed-size cache chunks from its Pingora proxy. The new system, called Origin Range Requests, is now a self-service feature on all plans, enabled via a Cache Rule with no size to configure. For R2, Cloudflare's object storage, p99 time to first byte dropped by about half on cache hits and misses. A follow-up change that combines cached and freshly fetched bytes in one response cut tiered cache traffic for R2 and similar workloads by about 6% week over week.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.cloudflare.com/origin-range-requests>

## Questions this post answers

### What is the Origin Range Requests feature in Cloudflare's cache?

It is a self-service Cloudflare feature that serves HTTP range requests using fixed-size cache chunks instead of a manually configured range size. Enabled through a Cache Rule by setting origin_range_requests to 'on', it requires no size tuning and is available on all plans, handling chunking and cache coordination automatically.

_Teams configuring CDN caching for large files can track infrastructure changes like this on daily.dev._

### Why did Cloudflare's old byte-range caching cause wasted bandwidth?

The old nginx-based implementation mapped each range request to a fixed configurable size that was also part of the cache key, so a 64 MiB range setting could turn a small read into 128 MiB of cross-datacenter transfer. Small ranges caused many tiny origin requests with memory pressure, while large ranges wasted bandwidth, and concurrent requests in the same range could block each other.

_Engineers debugging CDN bandwidth waste can follow architecture postmortems like this via daily.dev._

### How much did Cloudflare's new range-caching design improve R2 performance?

After moving R2, Cloudflare's object storage, to the new Pingora-based chunked caching implementation, p99 time to first byte dropped by roughly half across R2's storage regions on both cache hits and misses. A later change that combines cached and freshly fetched bytes in one response also cut tiered cache traffic for R2 and similar workloads by about 6% week over week.

_Developers evaluating object storage performance can keep up with results like this on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@ristotoldsep** · 0 upvotes

> Half the p99 TTFB with less knob-tuning. really nice engineering.

## Similar posts on daily.dev

- [Cloudflare Introduces Cache Response Rules for Post-Origin Cache Control](https://daily.dev/posts/cloudflare-introduces-cache-response-rules-for-post-origin-cache-control-nplkosnpk) · InfoQ · 0 upvotes · 0 comments
- [Introducing Cache Response Rules](https://daily.dev/posts/introducing-cache-response-rules-walwdkvfh) · Cloudflare · 6 upvotes · 0 comments
- [Cloudflare Tests Cache Transcoding to Reduce Storage Requirements](https://daily.dev/posts/cloudflare-tests-cache-transcoding-to-reduce-storage-requirements-iw5ae4p0h) · InfoQ · 0 upvotes · 0 comments
- [Cloudflare R2: object storage without egress fees](https://daily.dev/posts/cloudflare-r2-object-storage-without-egress-fees-facb8qxkw) · Flavio Copes · 0 upvotes · 0 comments

---

Tags: [#cloudflare](https://daily.dev/tags/cloudflare)

[View this post on daily.dev](https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Origin Range Requests: Serving large files without range-request tuning","url":"https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e"},"datePublished":"2026-10-23T18:26:10.528Z","dateModified":"2026-10-23T18:30:06.781Z","description":"Cloudflare rebuilt how its cache handles HTTP range requests, replacing a manually tuned range-size setting with fixed-size cache chunks from its Pingora...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/783b6a5d075e0ecd78f32db6860ff9b2?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/783b6a5d075e0ecd78f32db6860ff9b2?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Cloudflare","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Cloudflare","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/38522e1d11354cd6b7af66f9d4316735","url":"https://daily.dev/sources/cloudflare"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":29},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"cloudflare","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Cloudflare","item":"https://daily.dev/sources/cloudflare"},{"@type":"ListItem","position":3,"name":"Origin Range Requests: Serving large files without range-request tuning"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e","comment":[{"@type":"Comment","text":"Half the p99 TTFB with less knob-tuning. really nice engineering.","datePublished":"2026-10-27T13:43:47.824Z","url":"https://daily.dev/posts/Sy0inca3e#c-Uwn3btKsu","author":{"@type":"Person","name":"Risto Tõldsep","url":"https://daily.dev/ristotoldsep","image":"https://lh3.googleusercontent.com/a/ACg8ocLDWc6mZn0JwNmXXw6WY0L_HJ6pegzRttooC5VgtXESHSj3MNYx=s96-c"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/origin-range-requests-serving-large-files-without-range-request-tuning-sy0inca3e#faq","mainEntity":[{"@type":"Question","name":"What is the Origin Range Requests feature in Cloudflare's cache?","acceptedAnswer":{"@type":"Answer","text":"It is a self-service Cloudflare feature that serves HTTP range requests using fixed-size cache chunks instead of a manually configured range size. Enabled through a Cache Rule by setting origin_range_requests to 'on', it requires no size tuning and is available on all plans, handling chunking and cache coordination automatically. Teams configuring CDN caching for large files can track infrastructure changes like this on daily.dev."}},{"@type":"Question","name":"Why did Cloudflare's old byte-range caching cause wasted bandwidth?","acceptedAnswer":{"@type":"Answer","text":"The old nginx-based implementation mapped each range request to a fixed configurable size that was also part of the cache key, so a 64 MiB range setting could turn a small read into 128 MiB of cross-datacenter transfer. Small ranges caused many tiny origin requests with memory pressure, while large ranges wasted bandwidth, and concurrent requests in the same range could block each other. Engineers debugging CDN bandwidth waste can follow architecture postmortems like this via daily.dev."}},{"@type":"Question","name":"How much did Cloudflare's new range-caching design improve R2 performance?","acceptedAnswer":{"@type":"Answer","text":"After moving R2, Cloudflare's object storage, to the new Pingora-based chunked caching implementation, p99 time to first byte dropped by roughly half across R2's storage regions on both cache hits and misses. A later change that combines cached and freshly fetched bytes in one response also cut tiered cache traffic for R2 and similar workloads by about 6% week over week. Developers evaluating object storage performance can keep up with results like this on daily.dev."}}]}
```

