|
| 1 | +--- |
| 2 | +title: BYPASS status now returned for uncacheable responses |
| 3 | +description: Responses that Cloudflare chooses not to cache now consistently return a BYPASS cache status instead of a mix of BYPASS and MISS, giving you a clearer signal in logs and more accurate cache hit ratios in analytics. |
| 4 | +products: |
| 5 | + - cache |
| 6 | +date: 2026-05-26 |
| 7 | +--- |
| 8 | + |
| 9 | +Cloudflare now returns a `BYPASS` [cache status](/cache/concepts/cache-responses/) whenever a response is not cacheable, instead of the previous mix of `BYPASS` and `MISS` that depended on why Cloudflare chose not to cache the response. |
| 10 | + |
| 11 | +There are multiple reasons Cloudflare may refuse to cache a response — for example, the response exceeds the [maximum cacheable file size](/cache/concepts/default-cache-behavior/#cacheable-size-limits) for your plan, the origin sends `Cache-Control: no-cache`, `private`, or `max-age=0`, the response includes a `Set-Cookie` header, or the request includes an `Authorization` header. |
| 12 | + |
| 13 | +Previously, only some of these conditions returned `BYPASS`. Others — such as responses exceeding the maximum cacheable file size — returned `MISS` on every request, regardless of whether [Origin Cache Control](/cache/concepts/cache-control/#origin-cache-control-behavior) was on or off. Because the response could never be cached, every subsequent request also returned `MISS`, which looked indistinguishable from a broken cache and made it hard to tell whether Cloudflare was trying and failing to cache the asset or had deliberately chosen not to cache it. |
| 14 | + |
| 15 | +`BYPASS` now consistently signals that Cloudflare refused to cache the response, regardless of the reason. `MISS` is reserved for cacheable responses that simply were not in the local cache at request time. |
| 16 | + |
| 17 | +## What to expect in your analytics |
| 18 | + |
| 19 | +After this change rolls out, you should see: |
| 20 | + |
| 21 | +- **MISS rate decreases**: Uncacheable responses no longer count as cache misses. |
| 22 | +- **BYPASS rate increases**: These same responses are now reported as bypasses. |
| 23 | +- **Cache hit ratio increases**: Hit ratio calculations no longer include uncacheable traffic that could never have been cached, giving you a more accurate view of cache effectiveness. |
| 24 | + |
| 25 | +Your total request volume and origin traffic are unchanged — only the cache status label is different. |
| 26 | + |
| 27 | +## Browser cache TTL behavior is preserved |
| 28 | + |
| 29 | +The cache status label is the only thing changing — browser cache TTL handling for any given response is identical to what it was before: |
| 30 | + |
| 31 | +- Responses that historically returned `MISS` because Cloudflare refused to cache them (for example, responses over the maximum cacheable file size) now return `BYPASS`, but continue to have browser cache TTL applied — exactly as they did when they were labeled `MISS`. |
| 32 | +- Responses that historically returned `BYPASS` and skipped browser cache TTL continue to skip browser cache TTL. |
| 33 | + |
| 34 | +In both cases, the decision to apply browser cache TTL depends on the underlying reason Cloudflare did not cache the response, not on the new `BYPASS` label. |
0 commit comments