plugin-icon

ABCode Cache Warmer

Automatic cache warmer and preloader: rebuilds your page cache after every purge, in parallel, and shows exactly which URLs were cached.
Version
1.1.1
Last updated
Aug 5, 2026
ABCode Cache Warmer

ABCode Cache Warmer is a cache warmer and cache preloader for WordPress. It rebuilds your page cache automatically after every purge, so no visitor is ever the one who waits for a cold, uncached page.

Clearing your cache makes your site slow for a while. Every page has to be rebuilt from scratch, and it is your visitors who pay for it, the first person to land on each page waits for PHP and the database instead of getting a cached response. This plugin fixes that by visiting your pages for you, straight after a purge, so the cache is warm again before anyone real arrives.

It works alongside any caching plugin or host cache: WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache, Cache Enabler, Breeze, Nginx cache, Cloudflare, Kinsta, SiteGround and 20i StackCache among them. Your cache builds and serves pages; this plugin makes sure they are built before a visitor needs them.

Built to be fast

Most cache warmers request one URL at a time with a pause in between. On a site with a few hundred pages that leaves the cold-cache window open for many minutes, which is exactly the problem you were trying to solve.

This plugin warms several URLs at once using the HTTP library already bundled with WordPress. No Composer, no vendor directory, no third-party HTTP client. Just a much shorter cold window.

It measures your server instead of guessing

There is no one-size-fits-all crawl speed. A VPS can take eight concurrent requests without noticing; cheap shared hosting cannot.

On first load the plugin measures your site’s real response time and combines it with your PHP memory limit, CPU count and current server load to pick safe settings automatically. While a run is in progress it keeps watching: if responses start slowing down it backs off on its own, and speeds back up when the server recovers. Every value stays manually adjustable.

It tells you whether it actually worked

Other warmers report HTTP 200 and call it a success. A 200 tells you the page loaded, not that it got cached.

This plugin reads the cache headers on every response and reports what really happened for each URL:

  • Warmed: the page was not cached, and now it is
  • Cached: it was already warm, nothing to do
  • No cache: the page is deliberately uncacheable, such as a cart or checkout
  • Failed: shown with the actual error

It recognises Cloudflare (including stale-while-revalidate states), LiteSpeed and QUIC.cloud, Varnish (by its transaction IDs), Fastly, CloudFront and Akamai, Sucuri, Nginx FastCGI and proxy caches, the standard Cache-Status header (RFC 9211), Kinsta, SiteGround, 20i’s StackCache and StackCDN, Batcache (WordPress.com, Pressable, VIP), and (by their page signatures) WP Rocket, WP Super Cache, W3 Total Cache, WP Fastest Cache, Breeze and WP-Optimize.

Where a host runs two layers, an origin cache on the server and a CDN edge in front of it, as 20i does, the layers are read outermost first, because a cached edge response carries frozen copies of the inner layer’s headers from the moment the entry was built. A hit is credited to the layer that really served it, and a miss only counts once every layer outside it has also missed. So on 20i you will see Cached / StackCDN for pages the edge already held, and Warmed / StackCache for pages the warmer genuinely built.

Choose what gets warmed

  • Homepage
  • Posts, pages and any public custom post type, all on by default
  • Post type archives such as /products/ or /portfolio/, plus your blog page
  • Category, tag and custom taxonomy archives
  • Attachment pages
  • Images referenced by the pages being warmed
  • Your XML sitemap, core, Yoast or Rank Math
  • Any extra URLs you add by hand

Warmed in the order that matters

URLs are not warmed in whatever order the database returns them. The homepage goes first, then archive landing pages, then content, and the whole queue is then ordered breadth-first, so shallower pages warm before deeper ones.

On a site structured as /accommodation/ /accommodation/cottages/ /accommodation/cottages/rose-cottage/, the parent pages get warmed first. They take the most traffic and they are usually the most expensive pages to rebuild, because they run listing queries. Within each level, the most recently updated content comes first.

You can also skip URLs by pattern, with * as a wildcard, useful for carts, checkouts and account pages that should never be cached anyway.

About images

Warming raw image files is usually pointless, and this plugin does not push you into it. Image files are served straight off disk by your web server with no PHP involved, so there is no cold cache to prevent.

There is one case where it genuinely helps: plugins that build each image on first request, such as ShortPixel Adaptive Images, Optimole, EWWW Easy IO, Jetpack or a WebP/AVIF converter. There, the first visitor really does wait for the conversion.

For that case the plugin takes a smarter route than crawling your media library. It reads the image URLs out of the HTML it has already downloaded while warming your pages, so it warms exactly the files (and exactly the responsive sizes) your live pages reference, rather than thousands of library items no page uses. Images are always queued behind every page, and capped per run so an image-heavy site cannot drown out the page warming.

Free forever

No URL limits. No locked features. No upsells. The whole plugin does the whole job.

Freeon paid plans
Tested up to
WordPress 7.0.2
This plugin is available for download for your site.