CDN Cache Keys Drift When Teams Move to HTTP/3

Oct 20, 2026 By Sara Park

HTTP/3 keeps the request and response model intact, so most teams assume nothing about caching changes. Something does change: the transport underneath. Connection reuse, header ordering, and the way clients discover the protocol all shift, and cache keys built on TCP-era assumptions start splitting traffic they used to share.

The Quiet Divergence in Cache Keys

HTTP/3 is the third major version of the Hypertext Transfer Protocol, and unlike its predecessors it runs over QUIC on UDP rather than TCP. The semantics carry over. GET still means GET, and a response still carries cache directives. What does not carry over is the shape of the connection that carries those requests.

Cache keys date from an era when a client opened a TCP connection, sent a request, and the edge could reason about that connection as a stable identity. QUIC gives each connection an identifier that can outlive an address change, and it multiplexes streams independently. Reuse patterns that operators relied on without documenting them now behave differently.

Operators who flip HTTP/3 on at a large CDN report hit-ratio movement that does not match their traffic graphs. The byte counts look stable. The cache does not. Explaining the gap means going down to the transport layer and asking what the edge actually keys on.

What QUIC Actually Changes at the Edge

0-RTT resumption lets a returning client send application data on the first flight, before the handshake completes. At the edge, that collapses the boundary between connection setup and request arrival. Middleware that inspected connection metadata before routing a request now sees the request first, and the metadata arrives alongside it or later.

Connection migration is the second shift. A client can move between networks, say from Wi-Fi to cellular, and keep the same QUIC connection because the connection ID persists. Any edge logic that pinned sessions or cache partitions to a client IP address quietly loses its anchor. Mobile-heavy properties feel this first, because their clients change networks several times in a session and each move can land them on a different PoP with a different warm set.

Stream multiplexing changes header arrival order across concurrent requests. Alt-Svc headers reroute traffic silently: a response over HTTP/1.1 or HTTP/2 can advertise an HTTP/3 endpoint, and the browser switches on subsequent requests without a visible redirect. A portion of your traffic changes transport with no change to the URL.

There is a subtler effect worth naming. QUIC implementations negotiate header compression state per connection, and the exact behavior differs between stacks. Two clients sending byte-identical request headers can produce different wire representations, and middleware that inspects the wire rather than the decoded headers will see divergence that has nothing to do with the user.

Why Cache Keys Drift in Practice

Most default cache keys include scheme and host, and little else. That was sufficient when the transport was uniform. Once HTTP/3 negotiation adds implicit variants, two requests that look identical at the key level can arrive over different transports, from clients with different resumption state, and land on different edge behavior.

Vary headers behave differently across transports in ways that are easy to miss. A Vary on a header that QUIC compresses or reorders may not produce the same partitioning you tested over TCP. The header is present. The matching is not what you assumed.

Edge points of presence also see asymmetric protocol adoption. Some PoPs serve a browser population that has moved to HTTP/3 aggressively. Others serve clients that have not. A global hit-ratio number averages those populations together and hides the split entirely. The same discipline that applies to measuring before committing to a sharded database applies here: measure the dimension you are about to depend on.

Cache invalidation compounds the problem. A purge that targets a URL works the same on both transports, but a purge that targets a keyed variant may miss the HTTP/3 copy if the key schema quietly added a transport component during rollout. Teams discover this when a stale asset keeps serving to one segment of users and not another, and the purge dashboard shows green.

The Debugging Reality in 2026

Packet captures now require QUIC decryption. The handshake is encrypted, and the keys come from the TLS exchange, so a tcpdump on the edge box gives you ciphertext where it used to give you readable headers. Teams that built debugging habits around plaintext HTTP/2 captures have to rebuild them.

Browser devtools hide transport-level variance. The network panel shows a request and a status. It rarely makes the protocol version and the connection reuse decision obvious in the same view, so a front-end engineer cannot easily tell whether a cache miss came from the key or from the transport.

CDN logs rarely expose protocol version as a first-class field. Some providers include it, some bury it in a free-text field, and some omit it. That gap is the core problem: you cannot correlate hit ratio with transport if the transport is not in the log line. Teams split between curl and quiche-based tooling to reproduce what the edge sees.

Expect the reproduction to be imperfect. A local client that negotiates HTTP/3 cleanly against a test endpoint tells you the protocol works. It does not tell you how a real browser population with mixed resumption state and mid-session network changes will partition your cache. The only faithful reproduction is production traffic with the transport dimension recorded.

Rebuilding Cache Key Discipline

Normalize keys at the origin rather than the edge. The origin knows what actually distinguishes one representation from another, and it can emit a canonical key or a normalization header that every edge honors. Pushing that logic to each PoP guarantees drift the moment one provider updates its defaults.

Treat protocol version as an explicit dimension when it changes behavior. If HTTP/3 responses differ in any way that matters, say in early hints or in header casing, then the version belongs in the key. If they do not differ, document that decision so the next engineer does not re-litigate it during an incident.

Audit Vary headers after the rollout, not before. The behavior you need to verify is the behavior under the new transport, and that only exists once real clients are negotiating HTTP/3. A related piece on how SSH certificates and API keys diverge on revocation makes a similar point about assumptions that only fail in production.

Weigh the cost of adding the dimension. Every variant you add to the key multiplies the number of objects the edge must store and the number of misses it must fill on a cold PoP. For most sites the multiplier is small, because protocol version splits traffic into two or three buckets and the buckets are stable. For a site with a large object catalog and thin long-tail traffic, the extra variants can push a PoP below the working-set size it needs to stay warm, and the added misses cost more than the correctness buys.

What to Do This Quarter

Instrument cache hit ratio by protocol version before anything else. Add the transport to your log schema and your dashboards, even if the field is only available from one provider today.

Add Alt-Svc awareness to your key schema and your runbooks. Know which endpoints advertise HTTP/3 and which clients follow the advertisement.

Run a controlled test with HTTP/3 disabled on a single PoP and compare hit ratios against a matched PoP. That gives you a baseline the global number cannot.

Document key normalization in the runbook, including who owns the origin-side logic and how a change propagates to every edge. Review the CDN contract for protocol-specific SLAs, because a hit-ratio commitment that does not name the transport is not a commitment you can enforce.

Finally, put a date on the review. Protocol adoption keeps moving, and a key schema that is correct this quarter can drift again as more of your traffic lands on HTTP/3 and the PoP-level splits shift. A quarterly check against the same dashboards is cheap insurance against the same surprise twice.

Recommend Posts
Tech

KV Cache Reuse Shifts LLM Serving Costs Toward Memory Bandwidth

By Deepa Iyer/Oct 20, 2026

Prefix caching and PagedAttention cut redundant prefill work, but they push LLM serving costs onto HBM bandwidth. Here is where decode time actually goes and what operators can do.
Tech

DRAM Refresh vs On-Chip ECC in Embedded Linux Memory Budgets

By Yusuke Tanaka/Oct 20, 2026

How DRAM refresh steals bandwidth and inline ECC spends capacity in embedded Linux, where firmware sets the trade-off, and how to measure the real overhead before freeze.
Tech

Firmware Engineers Get Hired on Debugging Breadth, Then Paid for Register-Level Depth

By Sara Park/Oct 20, 2026

Firmware hiring screens for cross-layer debug breadth, but compensation follows register-level depth. What bring-up work demands, what it costs, and how to build depth without a lab.
Tech

OpenID4VC Credential Revocation Checks Depend on Status List Fetch Discipline

By Deepa Iyer/Oct 20, 2026

OpenID4VC revocation hinges on fetching status lists at presentation time. A breakdown of bit indexing, cache pitfalls, and fail-closed verification.
Tech

SSH Certificates and API Keys Diverge on Revocation and Blast Radius

By Yusuke Tanaka/Oct 20, 2026

SSH certificates and API keys fail in different ways. A technical comparison of revocation mechanics, exposure windows, and how each model shapes blast radius.
Tech

Edge Contracts Lock In Peering Deals That Traffic Growth Undercuts

By Deepa Iyer/Oct 20, 2026

Edge and CDN contracts are priced on stable traffic assumptions that no longer hold. Here is how bill-and-keep peering economics strain and what operators can do.
Tech

Signature Checks Catch Forged Tokens That Session Logs Never Record

By Deepa Iyer/Oct 20, 2026

Session logs miss forged tokens that signature checks catch. Learn how JWT verification works, the trade-offs with server-side sessions, and practical auth review steps.
Tech

Rendering Pipelines Split Framework Budgets Between Runtime and Build

By Deepa Iyer/Oct 20, 2026

Framework choice sets a hidden budget split between build minutes and runtime requests. A business breakdown of what runtime-first and build-first pipelines get right and wrong.
Tech

CDN Cache Keys Drift When Teams Move to HTTP/3

By Sara Park/Oct 20, 2026

HTTP/3 changes connection reuse, header ordering, and Alt-Svc routing at the edge. Here is why CDN cache keys drift after the switch and how to rebuild key discipline.
Tech

HTTP/3 Load Balancers Rebalance Edge Work Onto Connection IDs

By Yusuke Tanaka/Oct 20, 2026

HTTP/3 load balancers can no longer hash on a five-tuple. Here is how edge fleets map QUIC connection IDs to backend state, rotate them, and keep TCP fallback warm.
Tech

Distributed SQL Demands Different Interview Questions Than Single-Node Postgres

By Sara Park/Oct 20, 2026

Single-node Postgres interviews reward EXPLAIN drills. Distributed SQL needs commit-path walkthroughs, partition scenarios, and latency estimates with stated assumptions.
Tech

Incident Response Costs Sit in the Log Pipeline, Not the Breach

By Lucas Mendes/Oct 20, 2026

Most of an incident response bill goes to log handling, not the breach itself. A breakdown of where log costs accumulate, retention tradeoffs, and pipeline fixes that cut hours.
Tech

Inference Cost Curves Reshape LLM Team Hiring Priorities

By Lucas Mendes/Oct 20, 2026

Inference bills now rival training budgets, reshaping LLM team hiring. Engineers who own serving costs get deep ownership, margin impact, and scarce-skill premiums.
Tech

React Server Components vs Streaming SSR: Where Each Rendering Path Breaks Down

By Lucas Mendes/Oct 20, 2026

A technical comparison of React Server Components and streaming SSR, showing where each path breaks down and practical checks before you choose.
Tech

Password Managers Fail When Recovery Paths Go Unaudited

By Deepa Iyer/Oct 20, 2026

Vault encryption gets tested and audited. Recovery flows get shipped and forgotten. Here is how reset paths become the weakest gate into a password manager, and how to audit your own.
Tech

Training Budgets Stall While LLM Maintainers Stay on Call

By Yusuke Tanaka/Oct 20, 2026

Training grants stay flat while inference bills climb, and the maintainers who answer 3 a.m. pages absorb the gap. A look at on-call wear, bus factor, and what to do now.
Tech

What to Measure Before Committing to a Sharded Database

By Deepa Iyer/Oct 20, 2026

Sharding buys write throughput and bills you in coordination, migrations, and headcount. Here is what to measure first, and what each metric actually predicts.
Tech

Layout Engines Force a Reckoning With What Frontend Frameworks Actually Own

By Sara Park/Oct 20, 2026

Frontend frameworks own components and state, but the browser engine owns layout. A look at why 2026 debugging keeps pushing developers back to Blink and the box model.
Tech

Firmware Debugging Breadth Pays Before Driver Work Gets Specialized

By Lucas Mendes/Oct 20, 2026

Driver specialists inherit a narrow debugging surface. A breadth-first path through firmware and the hardware-software boundary pays back later, with real trade-offs along the way.
Tech

Build Minutes Are the Real Line Item in CI Contracts

By Lucas Mendes/Oct 20, 2026

CI contracts are priced on compute time, not seats. Here's where the margin lives, how overages bite, and what finance never sees until renewal.