Benchmarks: Before and After
50 curl requests per endpoint, per mode. The median cache hit response for the
advanced-cache.php drop-in was 15ms.
The uncached baseline was 833ms.
Average response time across all 7 tested endpoints — posts, pages, and categories, both list and single-item requests. Results are consistent regardless of endpoint type.
Median response time across all 7 individual endpoints tested. The pattern is identical whether the request is for a list of posts or a single category — the cache layer doesn’t care about the endpoint, only about whether the file exists on disk.
Frosty Cache has two cache paths. The drop-in intercepts requests before WordPress even connects to the database. The MU plugin is a fallback for when the drop-in is unavailable — it still exits before the REST router runs, but after the DB connects. The ~185ms difference between the two paths is the cost of the database connection itself.
advanced-cache.phpAll benchmarks were run locally to eliminate network jitter. Production results will vary by server hardware, but the ratios hold — the drop-in is always faster by the cost of the database connection.
🖥 Environment
- Local by Flywheel (local dev)
- WordPress 7.0
- PHP 7.4
- nginx 1.26
- MySQL 8.4 via Laragon
⚗️ Test method
- 50 requests per endpoint per mode
curl --time-totalmeasured end-to-end- Endpoints warmed before measurement
- Results reported as min/avg/median/p95/max
- Charts use median values
📐 Three modes
- MISS —
?skip_cache=1forces fresh DB hit every time - Drop-in HIT —
advanced-cache.phpserving pre-DB - MU Plugin HIT — fallback path, post-DB, pre-REST
WP REST API Cache is the most popular transient-based REST caching plugin. It stores responses in the WordPress database and serves them without executing the REST controller — a real speedup, but WordPress still boots and connects to the database on every request. The drop-in can’t be matched by any plugin that requires WordPress to load first.
🔍 Why they’re equal
- WP REST API Cache stores responses as database transients
- On a HIT it still boots WordPress, connects to the database, then reads the transient
- This is the same work Frosty Cache’s MU plugin fallback does — hence ~233ms vs ~200ms
- No transient-based plugin can beat a pre-database file read
⚡ Why the drop-in wins
advanced-cache.phploads before WordPress starts- No database connection, no plugin bootstrap, no REST router
- Pure PHP file I/O — read JSON file, send headers, exit
- ~15× faster than WP REST API Cache on a HIT
20 requests per endpoint against a live WordPress install on shared hosting.
MISS baseline uses ?skip_cache=1
to bypass the drop-in. HIT is a normal request served by advanced-cache.php.
This run also confirms the cache-control fix: Frosty Cache now passes through the origin’s own
Cache-Control header (public, max-age=86400)
instead of overriding it, and X-FrostyCache: HIT/MISS/BYPASS reports
the correct state on every response.
📡 Network conditions
- Remote client → shared-hosting origin (InstaWP)
- Connection + TLS handshake: ~390ms, fixed cost, identical on HIT and MISS
- TTFB includes the full network round-trip
- A CDN or geographically closer client would show larger relative gains
⚡ Server-side saving
- MISS server processing: ~1039ms median (WordPress + database + REST dispatch, on shared hosting)
- HIT server processing: ~321ms median (drop-in file read, minus connection/TLS overhead)
- ~718ms eliminated server-side on every cached request (69% reduction)
- Measured via
curl‘s TLS-connect and TTFB timers, isolating server time from network time
Same drop-in, same machine — tested against WooCommerce FSE block endpoints (~38ms / ~23×) and CoCart v2 headless catalog endpoints (~38ms / ~24×).
Ready to see these numbers
on your site?
Drop-in installation. Works on any WordPress host.