Skip to main content
Aero Cache Warmer V2 10 1
A cold cache is a trap. You purge (correctly) after a content change, and the very next visitor, maybe a real person, maybe Googlebot, pays the full render cost while the cache rebuilds around them. The Cache Warmer (Aero → Cache Warmer) exists to close that gap: it proactively re-requests your pages right after a flush, so Batcache and Edge Cache are already warm before real traffic arrives.

Warm Now and the queue

Two controls sit at the top of the screen. Warm Now kicks off a run immediately, and Cancel Run stops one that’s already going, marking anything still pending or warming as skipped rather than leaving it hanging. You won’t need either one day to day once “Warm automatically after every flush” is on, but they’re there for testing a settings change or manually recovering after something unusual happens to your cache. A status line tracks each run: Idle or Running, a one-line summary of what triggered it, and four live counts (warmed, warming, pending, failed) while it’s in progress. Runs cap out at 2 hours, and if any single URL gets stuck at “warming” for more than 5 minutes, it’s marked failed and the run keeps moving instead of stalling on one bad page. Below that, the Queue table lists the most recent run: URL, which variant hit it (regular visitor or bot), the HTTP status returned, whether the Cache column confirms it via a follow-up check, and how long the request took. Refresh Cache Status re-runs that check against the last 20 completed items without starting a new warm pass, handy if you want to confirm a page is still serving from cache well after the original run finished. Anything the check finds cold gets warmed by the act of checking it.

Reading the Variant and Cache columns

Both the Queue table above and the Re-warms table further down share these two columns, and they mean the same thing in each, just displayed a little differently. Variant is which browser signature made the request. In the Queue table, every row is tagged HUMAN or BOT: a normal-browser request versus one sent with a PageSpeed/Lighthouse-style user agent, which only shows up when warming the Guest bucket is on. The Re-warms table condenses this into one row per URL instead of two, so its Variants column reads H for a human-only warm or H+B when the same URL got warmed as both a visitor and a bot. Cache is the actual result of checking the page, and a couple of these states look like problems when they’re not:

Warmer settings

When Guest Mode cache isolation is active (see the Experimental page), each URL gets warmed twice: once as a regular visitor, once as a PageSpeed-style bot, so both buckets stay hot. This doubles request volume during warming. It’s inert and grayed out if Guest Mode isolation is off.
If a file exists at /llms.txt, the warmer treats it as a curated list of your most important pages and warms those ahead of the general sitemap crawl. A Preview llms.txt button shows you exactly which URLs get picked up (matches are highlighted), and Re-scan llms.txt re-checks for the file if you’ve just added or changed one, since detection doesn’t happen on every page load. Read the callout below before you file this under “SEO,” because Google specifically says it doesn’t count as one.
Aero’s llms.txt support is a warming convenience, not an SEO or AI-visibility feature for Google. Google has stated directly that it doesn’t use llms.txt or any similar machine-readable file for Search or its generative AI features (that said, ChatGPT, Claude, and Perplexity may use llms.txt), and that creating one “will neither harm nor help your site’s visibility or rankings in Google Search.” (Source: Google’s generative AI search guide, under “Mythbusting generative AI search.”) If you already maintain an llms.txt for other AI tools or agents that do read it, this setting is a nice bonus: those same important pages get warmed first. Don’t create one purely on the assumption it moves the needle in Google Search, because it doesn’t.

Warming behavior

Re-warms

This is the small, fast sibling to the full warm run above, and it’s a different mechanism entirely. Edit a post, publish something, trash a page, approve a comment, or purge a single URL from Purge & Schedule: each of those actions purges a specific, small set of URLs, and this is what re-fills them before the next visitor lands on a cold page. You’ll find the Re-warms panel on the Cache Warmer screen itself, sitting between the main warm queue and Priority Edge. It’s empty outside of active purging, then fills in live as URLs move through pending, warming, and done, each row tagged with the reason it was purged in the first place. A few things worth knowing about how it behaves:
  • It’s capped at 40 URLs and kicks off roughly 10 seconds after the purge settles. That short delay gives the Edge purge and the Batcache group bump time to finish, so the warm request captures fresh output instead of racing a purge that hasn’t landed yet.
  • The homepage jumps to the front of the queue automatically, since it’s the page almost every visitor hits first.
  • With Guest Mode isolation on and the bot bucket enabled, each URL here warms twice: once as a regular visitor, once as a bot, same behavior as the main warmer, shown as H+B in the Variants column (see Reading the Variant and Cache columns for what all these column values mean).
  • A full flush (manual, admin bar, scheduled, whatever the trigger) wipes this list entirely. Once a full flush happens, every entry in the re-warm history describes a cache entry that no longer exists, so Aero clears it out rather than showing you stale data.
None of this needs configuring. It runs automatically whenever “Warm automatically after every flush” is on, and it’s meant to stay invisible unless you’re actively watching the screen while you edit content.

Priority Edge

A short list (up to 10 URLs) that gets kept continuously admitted at WP Stratos’s Edge Cache tier, the fastest possible serve, regardless of normal traffic patterns. Edge admission normally requires two visits within two minutes; Priority Edge sidesteps that by generating the qualifying hits itself on a 10-minute cycle, then verifies admission actually took by checking the response’s x-ac header. Use this for your handful of highest-value pages: homepage, primary conversion page, anything you’d be embarrassed to have serve slowly during a spike in interest. General warming and the URL limit setting handle the rest of the site.

Scheduled warming

A belt-and-suspenders setting independent of the after-flush warming above: runs a full warm pass on an interval (hourly through weekly), so pages whose Batcache TTL naturally expired get rebuilt before a visitor notices the gap. This runs on its own schedule, separate from the flush schedule on Purge & Schedule, but the two are worth coordinating: pair the interval here with your Batcache max_age, if pages are cached for 24 hours, a daily scheduled warm keeps things from ever going fully cold between expirations.

Why this matters beyond “faster pages”

A warm cache isn’t only a visitor-experience metric. Crawlers, including Googlebot, are sensitive to response time and server load when deciding how much of a site to crawl in a given window, a concept Google calls crawl budget and covers in its crawl budget guidance. A site that’s consistently fast to respond, because pages are warm rather than regenerating on demand, is a site that’s easier and cheaper for a crawler to work through. That’s a quiet, compounding advantage that has nothing to do with keyword density and everything to do with technical reliability.
Last modified on August 24, 2026