Benchmark: 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.
FrostyCache 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 8.2 (Visual C++ 2019)
- 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 FrostyCache’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
30 requests per endpoint against a live WordPress 7.0 / PHP 8.4.12 / Apache server.
MISS baseline uses a per-request cache buster to bypass all server-side caching.
HIT uses the advanced-cache.php drop-in — WP_CACHE
is enabled and FrostyCache owns the drop-in on this host. WordPress never loads on a cache hit.
Network RTT from EU to the US server adds ~530ms of overhead per request, which dominates
the total time regardless of cache state.
📡 Network conditions
- EU client → US server (InstaWP)
- ~490ms overhead per request (DNS + TCP + TLS + 1 RTT)
- TTFB includes full network round-trip
- A CDN or geographically close client would show larger relative gains
⚡ Server-side saving
- MISS server processing: ~510ms (WordPress + database + REST dispatch)
- HIT server processing: ~195ms (PHP-FPM startup + file read only — no WordPress, no DB)
- ~315ms eliminated on every cached request
- WordPress never loads on a drop-in HIT
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.