Frosty Cache vs WP REST Cache. Head-to-head.
Two identical live demo sites on shared hosting, same content, same theme — one running Frosty Cache’s, the other running WP REST Cache. Same six WordPress REST API endpoints, tested live on both.
Median response time across six WordPress REST API endpoints — post/page/category listings and single items — tested live against both demo sites. Both plugins beat an uncached response by a wide margin; the gap between them is the cost of the work each one still has to do on a cache hit.
All times in milliseconds, median. MISS on both sites uses a per-request cache buster to force a fully uncached response. HIT is a normal repeat request. See Methodology below for why WP REST Cache’s HIT numbers required extra isolation to measure fairly.
| Endpoint | Plugin | Mode | min | avg | median | p95 |
|---|---|---|---|---|---|---|
| wp/v2/posts (list) | Frosty Cache | MISS | 1272 | 1385 | 1384 | 1533 |
| HIT | 610 | 757 | 735 | 1747 | ||
| WP REST Cache | MISS | 1281 | 1640 | 1557 | 2193 | |
| HIT | 779 | 1068 | 872 | 2993 | ||
| wp/v2/pages (list) | Frosty Cache | MISS | 1491 | 1562 | 1654 | 1741 |
| HIT | 746 | 874 | 874 | 1929 | ||
| WP REST Cache | MISS | 1564 | 1982 | 1805 | 3897 | |
| HIT | 821 | 942 | 939 | 1048 | ||
| wp/v2/categories (list) | Frosty Cache | MISS | 1243 | 1421 | 1402 | 2213 |
| HIT | 602 | 720 | 729 | 765 | ||
| WP REST Cache | MISS | 1213 | 1331 | 1329 | 1457 | |
| HIT | 632 | 759 | 764 | 842 | ||
| wp/v2/posts/{id} | Frosty Cache | MISS | 1198 | 1349 | 1354 | 1463 |
| HIT | 589 | 754 | 725 | 1751 | ||
| WP REST Cache | MISS | 1229 | 1448 | 1371 | 2311 | |
| HIT | 773 | 907 | 819 | 1761 | ||
| wp/v2/pages/{id} | Frosty Cache | MISS | 1247 | 1387 | 1384 | 1469 |
| HIT | 599 | 713 | 715 | 752 | ||
| WP REST Cache | MISS | 1312 | 1435 | 1368 | 1974 | |
| HIT | 639 | 895 | 807 | 1854 | ||
| wp/v2/categories/{id} | Frosty Cache | MISS | 1258 | 1408 | 1400 | 1491 |
| HIT | 603 | 723 | 727 | 735 | ||
| WP REST Cache | MISS | 1209 | 1484 | 1372 | 2744 | |
| HIT | 763 | 906 | 791 | 1854 |
One WP REST Cache sample (categories/{id} HIT) returned a single
300-second outlier out of 10 requests — a stalled connection on the shared host, not a
caching event. It’s excluded from the average/p95 shown for that row; the median (791ms,
from the other 9 samples) is unaffected and is what’s charted above.
WP REST Cache’s own documentation scopes it to default WordPress REST API GET endpoints,
custom post types, and manually registered custom endpoints — it doesn’t mention the
WooCommerce Store API or CoCart. That’s confirmed live: on the WP REST Cache demo site,
wc/store/v1/products takes the same ~1.6s on every request,
with no cache-layer speedup at all. Frosty Cache caches both out of the box via dedicated
compatibility modules — see the
WooCommerce and CoCart
benchmark pages for live numbers there.
| Route family | Frosty Cache | WP REST Cache |
|---|---|---|
| wp/v2 (posts, pages, categories, …) | HIT | HIT |
| wc/store/v1 (WooCommerce Store API) | HIT | Not cached by default |
| cocart/v2 (CoCart) | HIT | Not cached by default |
| Custom endpoints | Automatic for any GET | Manual registration required |
Two live demo sites, same host provider, same host-level configuration, same content and theme — one with Frosty Cache active, one with WP REST Cache active. Nothing else changed between them.
🔍 An extra layer, isolated
- The WP REST Cache demo site runs an nginx-level microcache in front of WordPress, with a short (~3–6 second) TTL — a host-level layer, not something WP REST Cache itself controls
- That layer wasn’t present on the Frosty Cache demo site
- Measuring through it would credit WP REST Cache with speed from a caching layer it doesn’t own
- Fix: identical requests spaced 10 seconds apart, well past the microcache’s TTL, so nginx always shows
EXPIRED/passthrough while WP REST Cache’s own (longer-lived) cache stays warm — isolating the plugin’s actual contribution
⚗️ Test method
- 6 WordPress REST API endpoints — post/page/category lists and single items
- MISS: 15 requests per endpoint, each with a unique cache-busting parameter
- HIT: 10 requests per endpoint, 10 seconds apart, identical URL
curl --time-totalend-to-end, median reported
Local and live results for the WordPress core REST API, the WooCommerce Store API, and CoCart — including why WP REST Cache doesn’t reach either of the last two.
Ready to see these numbers
on your site?
Drop-in installation. Works on any WordPress host.