← Back
Application Performance

Connect, protect, perform — without compromise.

Speed isn't a feature — it's revenue, conversion, SEO, and retention. Every layer of the Cloudflare edge exists to shave milliseconds off every request, for every user, everywhere.

53%
of mobile visits are abandoned if a page takes longer than 3 seconds to load (Google / SOASTA)
−1%
in sales for every 100 ms of added latency (Amazon)
+2%
conversion uplift for every 1 second of page-load improvement (Walmart)
explore the layers
Accelerate internet applications

Most requests should never reach your origin.

Every request you can answer from cache is a request your origin never pays for. Cloudflare runs a hierarchical edge cache across 330+ cities — with Cache Rules for per-route control, Tiered Cache to lift hit ratios, and Cache Reserve for persistent retention. Less origin traffic. Lower egress bills. Faster pages.

Edge cache hit · vs · origin round-trip illustrative · loops continuously
Cache HIT
~20 ms
Origin MISS
~300 ms
Cache Rules

Per-route. Per-condition.

Match on URL, headers, cookies, or queries. Set edge & browser TTLs and custom cache keys without touching app code — a measurable drop in origin requests for the routes that matter.

Tiered Cache

Closer cache hits. Fewer origin trips.

An edge miss becomes a regional hit — not a request to your origin. Smart Tiered Cache picks the optimal topology automatically. Hit ratios climb, origin egress drops, and your app never knows the difference.

Cache Reserve

Persistent cache. Origin protection.

A deeper, longer-lasting cache. When the edge cache misses, we serve from Reserve instead of hitting your origin — slashing bandwidth costs and keeping you online even when your origin isn't.

~95%
of requests answered at the edge on typical sites — origin never sees them
Higher hit ratio
Tiered Cache turns most edge misses into regional hits — your origin sees a fraction of the traffic it used to
30+ days
default Cache Reserve retention on R2 — and the origin keeps serving even when it can't
0 code
Cache Rules, Tiered Cache, and Cache Reserve are all dashboard toggles — not a rewrite
Argo Smart Routing

When the cache misses, take the smart road home.

The public internet routes packets along the cheapest BGP path — not the fastest. Argo measures real-time congestion across Cloudflare's private backbone and steers your traffic onto the lowest-latency route, every time. One toggle. Zero code changes. Measurable on every cache miss.

Same user · same origin · two routes illustrative · loops continuously
Smart Routing

Pick the fastest path, every request

Argo runs continuous latency probes across the Cloudflare backbone and route databases worldwide. When a request can't be served from cache, it's steered through the lowest-latency hop — often avoiding congested transit entirely.

Live Telemetry

Per-request route decisions, not static hops

Argo doesn't pick a path once and forget it. Every request is steered against billions of live latency measurements collected across Cloudflare's network. As congestion shifts, your traffic shifts with it — automatically, transparently, every time.

Protocol Optimizations

HTTP/3, 0-RTT, and connection reuse

Persistent backbone connections, HTTP/3 over QUIC, and 0-RTT resumption shave more time off each round-trip. Argo turns the network itself into a performance feature — invisible to your app, measurable in your logs.

~30%
average TTFB reduction on cache misses (Cloudflare measurements)
Billions
of latency measurements per day feeding the routing engine
330+ cities
of private backbone interconnect — the road Argo drives on
One toggle
enabled per-zone — no app changes, no library, no SDK
Load Balancing

One hostname. Every region. Steered at the edge.

Cloudflare Load Balancing runs health checks and steering at the same 300+ POPs that already terminate TLS, run WAF, and cache your content — so failover happens next to the user, not after a hop to a regional load balancer. Put it in front of the AWS ALB, GCP LB, F5, NGINX, or HAProxy you already run. Augment — don't rip out.

300+ POPs
where health checks originate — not one region, and not one cloud
6 policies
Off, Geo, Random, Dynamic, Proximity, and Least Outstanding Requests — plus a full custom-rule escape hatch
One filter language
the same Ruleset Engine as WAF, Cache Rules, Transform Rules, and Configuration Rules
Sub-second failover
health-triggered pool switch at the edge — no DNS TTL wait
Health checks originate at 300+ POPs illustrative · loops continuously
Augment your existing LB · don't replace it illustrative · loops continuously
Monitor

Defines the health check

Our monitor origin-health-http-80 sends an HTTP GET to /health on port 80, expects a 200, and runs every 60s from every Cloudflare region — with the Host header pinned to lb.nobledemos.com so the origin sees the real hostname.

Pool

Groups your endpoints

Endpoints are address-shaped — an IP, a hostname, or a Cloudflare Tunnel. pool-us holds an origin in Atlanta, pool-eu one in Paris. A pool is healthy while its endpoints pass the monitor; unhealthy pools drop out of steering.

Load Balancer

Binds a hostname to pools

lb.nobledemos.com is proxied through Cloudflare, points at both pools, and carries a steering policy plus a fallback pool for when everything else is unhealthy. One hostname, many origins, decided at the edge.

Monitor · Pool · Load Balancer illustrative · loops continuously
Proximity steering · active

Nearest healthy pool wins

The live demo runs Proximity: each request is measured as a great-circle distance from the answering POP to each pool's coordinates, and routed to the closest healthy one. A request from Europe lands on pool-eu; from the US, on pool-us.

Six policies

Pick the steering that fits

Off, Geo, Random, Dynamic, Proximity, and Least Outstanding Requests — chosen per hostname. Each answers a different question: where is the user, which pool is fastest, which is least loaded.

Custom LB Rules · the differentiator

When a fixed policy isn't enough

Write a Ruleset Engine expression and override steering on any request attribute — header, cookie, country, path, or a combination. This is where Cloudflare pulls ahead of a fixed steering dropdown.

Proximity steering · two pools · one hostname illustrative · loops continuously
Six steering policies · Proximity active on lb.nobledemos.com reference
Off First healthy pool in configured order
Geo Region-to-pool mapping you define
Random Weighted random across healthy pools
Dynamic Health + performance signals, no geography
active Proximity Great-circle distance, nearest healthy pool wins
Least Outstanding Pool with fewest in-flight requests wins
Custom LB Rule · demo-force-us-pool illustrative · loops continuously
Header canary

Route a canary cohort by header

http.request.headers["x-canary"][0] eq "true"
→ override to pool-canary

Send only flagged traffic to a new build, everyone else stays on the stable pool.

Cookie sticky override

Pin a user to a region by cookie

http.cookie contains "prefer=eu"
→ override to pool-eu

Support and debugging: force a specific user onto a chosen pool without touching steering.

Path-based failover

Send a path to a dedicated backend

starts_with(http.request.uri.path, "/api/legacy/")
→ override to pool-legacy

Exactly the shape of the live demo rule — /force-us pins to pool-us.

One filter language, many hooks. These are the same Ruleset Engine expressions that power WAF custom rules, Cache Rules, Transform Rules, and Configuration Rules — learn the syntax once and it applies across every product on the zone.
Five additional controls let you tune LB behavior beyond the steering policy:
Endpoint steering
Per-endpoint weights + health awareness within a pool
Health check regions
Choose which Cloudflare regions probe your origins
Load shedding
Shed a traffic % before a pool tips over under load
Session affinity
Sticky sessions by cookie, IP, or header with TTL
Adaptive routing
Hash-based failover on degradation — no manual work
Health check origin
300+ POPs, all regions simultaneously
vs. AWS ALB · GCP LB: regional only
Cross-cloud steering
Any endpoint address — built-in
vs. ALB / GCP: vendor-native origins only
Shared filter language
LB · WAF · Cache · Transform — one syntax
vs. separate configs per service elsewhere
Canary rule speed
One custom LB rule, instant deploy
vs. target groups + listener rules + reloads
Prove it from your own terminal live · lb.nobledemos.com
Default steering · Proximity
$ curl -sI https://lb.nobledemos.com/whoami | grep -i x-served-by-region
# from Europe → x-served-by-region: europe-west9 # from US → x-served-by-region: us-east1
Custom LB Rule override · demo-force-us-pool
$ curl -sI https://lb.nobledemos.com/force-us/whoami | grep -i x-served-by-region
# always → x-served-by-region: us-east1 # a path-matched rule overrides Proximity steering
Origin health check path
$ curl -si https://lb.nobledemos.com/health
# HTTP/2 200 — this is what the Monitor checks every 60s from every region # content-type: application/json # {"status":"ok","region":"europe-west9"}
Measure web experience

You can't fix what you can't see.

Speed isn't a vibe — it's a number. Cloudflare Observatory runs Lighthouse-grade synthetic tests from 21 regions, captures Core Web Vitals from real visitors, and watches every hop between the edge and your origin. When something gets slow, you know which endpoint, which region, and which fix to apply.

Observatory

Lighthouse + RUM, in one place

Synthetic Lighthouse audits and Core Web Vitals from real visitors. Recommendations point straight at the Cloudflare feature that closes the gap.

baseline
62
after recs
94
Origin Analytics

Watch the link to your origin

See every endpoint's latency and error rate. Find the slow route dragging p95 — before your users do.

/api/products
124ms
/api/checkout
892ms
/static/*
38ms
Synthetic Monitoring

Test from 21 regions, on a schedule

Browser and network tests, on demand or daily. Compare any two runs side-by-side to prove a deploy made things faster.

21 regions
synthetic tests run from 5 continents — the same places your users are
Lighthouse
full Google audit on every run, scored desktop + mobile
TTFB → INP
every Core Web Vital, plus origin-side timings the browser can't see
Daily
recurring tests catch regressions before your users do
The bottom line

Speed is a business metric.

Every layer of the Cloudflare edge — cache, network, assets — exists for one reason: less waiting, more revenue. You don't have to choose which one. They all ship together.

+1%
revenue per 100ms shaved off load time
−7%
conversion for every 1s of delay
53%
of mobile users abandon after 3s
↑ SEO
Core Web Vitals reward fast pages
Create your Cloudflare account
Sign up, add a domain, and start exploring every layer at the edge.
Get started ↗