Reference

R2 browser benchmarks

This page reports live browser measurements against the Cloudflare Worker and R2 reference deployment. Results describe the tested workload and regions; they do not imply general superiority over another database.

Workload

Each regional browser run:

  • opens the production Worker custom domain
  • exchanges a real Entra access token
  • reads one cold product from a 128-product catalogue
  • performs 100 sequential product reads
  • scans a 32-customer collection
  • clears browser caches before each cold operation

Multi-region result

Raw artifacts:

evidence/r2-browser-multiregion-trie-2026-09-24.json
evidence/r2-browser-multiregion-snapshot-2026-09-24.json

Disposable Chromium 153 containers ran in North Europe, US East, and Southeast Asia against a private Worker custom domain, private R2 buckets, and Entra session exchange.

Initial run, product trie, customer snapshot, one-second HEAD TTL:

RegionAuthCold productHot p50Hot p95Customer scan
North Europe8,068.2 ms4,149.0 ms0.3 ms1,908.6 ms1,959.2 ms
US East5,348.6 ms2,550.0 ms0.3 ms1,319.0 ms1,250.4 ms
Southeast Asia16,137.3 ms4,844.9 ms1,216.0 ms2,559.9 ms3,122.4 ms

The four sequential trie object requests missed the cold-read threshold. In Southeast Asia, one round trip exceeded the one-second HEAD TTL, so every hot read revalidated HEAD.

Reference configuration after the first run: product and customer snapshots with a ten-second HEAD TTL.

RegionAuthCold productHot p50Hot p95Customer scan
North Europe8,619.9 ms1,933.9 ms0.9 ms8.3 ms1,713.8 ms
US East4,933.4 ms1,247.0 ms0.8 ms5.2 ms949.2 ms
Southeast Asia12,717.9 ms3,439.6 ms0.7 ms1.6 ms3,006.9 ms

What the results mean

  • Snapshot layout reduced product cold-read time by 29-53 percent.
  • The ten-second HEAD TTL removed repeated regional revalidation from the 100-read loop.
  • Warm in-memory reads were sub-millisecond at p50 in all three regions.
  • Cold reads and external session creation remain well above the published latency targets.
  • Cloud-region probes approximate geography but do not represent residential last-mile networks.
  • The result supports adaptive layout selection for this workload. It does not establish superiority over another database.

Measurements not covered

The published runs do not cover:

  • first load, warm memory, warm IndexedDB, and offline reads
  • gzip ratio and CPU cost by object-size bucket
  • AES-GCM and device-cache encryption cost
  • key-grant latency
  • Worker CPU time and subrequest counts
  • R2 Class A and Class B operations per user action
  • contention after partitioning or sharding collection roots
  • cost at idle and at representative small-app traffic

Layout decision thresholds

Choose trie as the sole storage model only when measurements show:

  • at least 5x fewer transferred bytes than a cached snapshot for point reads
  • warm IndexedDB reads within 2x of plain IndexedDB JSON
  • encrypted first-read p95 below 250 ms from the reference Cloudflare region
  • fewer than two conditional-write retries at p95 for normal small-app traffic
  • maintenance below 10 percent of write operations

The live R2 run missed the cold-read threshold, so the reference deployment uses an adaptive layout:

  • compressed immutable snapshot for small collections
  • sharded pages only when measured size or access patterns justify them

This page is built from the repository source.

View or improve this page on GitHub