Make WordPress Fast - Before the First Visit

"Speed comes from using less, not from doing it faster"

Rush - Performance by Prevention

Stops WordPress bloat before it starts

  • Loads only what the current page actually needs
  • Cuts unnecessary PHP and database work
  • Delivers real speed - not just better PageSpeed scores

600%+ faster main document load

Kitt - The Cache Crawler

Turns Cache Maintenance into a Speed Advantage

  • Keeps the cache warm - even under constant purge pressure
  • Cuts warmup overhead by up to 70%
  • Warms visitor URLs beyond the sitemap
  • Covers pagination, filters, and other dynamic URLs

300%+ faster than LiteSpeed

WordPress Performance: Why Page Cache Alone Is Not Enough

WordPress performance is usually discussed as a collection of separate optimizations: faster hosting, fewer plugins, database optimization, image compression, CDN delivery, CSS and JavaScript optimization, and page caching.

All of these can matter. But they solve different parts of the performance problem.

For a normal cacheable page request, one of the most effective performance improvements is to avoid repeating the WordPress application work altogether. Instead of loading WordPress Core, the theme, plugins, PHP logic and database queries for every visitor, a page cache stores the generated response and serves it again.

That is the basic idea behind page caching.

But there is an important condition that is often left out:

A page cache can only serve a cached page if that page already exists in the cache.

Enabling page caching makes caching possible. It does not guarantee that the required page is cached when a visitor arrives.

Where page cache fits into WordPress performance



It helps to separate several different performance tasks.

Some optimizations reduce the amount of work WordPress has to perform. Better PHP code, fewer unnecessary plugins, efficient database queries and sufficient server resources belong here.

Other optimizations reduce what the browser has to download or process. Image optimization, CSS and JavaScript improvements, compression and CDN delivery belong mainly to this layer.

Page caching does something different: for cacheable requests, it can prevent most of the WordPress application work from happening at all.

Instead of generating the same page repeatedly, the server can return a previously generated version.

That can dramatically reduce server processing time and Time to First Byte.

But only on a cache hit.

A cache miss still requires the page to be generated normally.

Enabled cache and warm cache are not the same thing



Installing a cache plugin and enabling Page Cache therefore solves only one part of the problem.

The cache is now capable of storing pages.

It does not mean that every page a visitor may request is already stored.

When a URL is requested for the first time, WordPress still has to generate it. Core loads. The theme loads. Plugins execute. Hooks run. PHP logic is processed. Database queries are performed.

Only after that work has been completed can the resulting page be stored in the cache.

Without cache warmup, the first real visitor to an uncached page becomes the person who generates the cache entry.

That visitor receives the cache-miss performance.

The visitors after them receive the cache-hit performance.

This does not happen only once



A page cache is not filled permanently.

Cached entries disappear for several reasons.

They may expire after their configured Time to Live (TTL). They may be purged when content changes. A plugin, theme or application event may invalidate related pages. Cache variants may also exist for different devices, languages, cookies or configurations.

Each missing entry creates the same situation again:

  1. A request arrives.
  2. No usable cached response exists.
  3. WordPress generates the page.
  4. The result is stored.
  5. Later requests can use the cached version.


Without warmup, real traffic determines when this regeneration happens.

That makes page-cache performance partly dependent on chance.

A visitor may receive a page in a few milliseconds because the cache entry exists, while another visitor requesting a recently purged page may trigger the complete WordPress application stack.

What cache warmup actually does



Cache warmup changes who performs that first request.

Instead of waiting for a real visitor to discover that a page is missing from the cache, a warmup process requests the page in advance.

WordPress generates the page, the page cache stores it, and the expensive cache miss happens before the real visitor arrives.

The purpose of warmup is therefore not to make the cache itself faster.

It is to increase the probability that the required cache entry already exists when it is needed.

That makes cache warmup part of cache availability.

The important performance question is not only:

"Is Page Cache enabled?"

It is also:

"Will the required cached page be available when a visitor requests it?"

Why this belongs on a WordPress performance checklist



Many WordPress performance recommendations correctly suggest enabling page caching.

But stopping there treats the capability to cache as if it were the same as having a usable cache.

They are different states.

A simple performance strategy might therefore look like this:



Cache warmup is not a replacement for the other measures.

It closes a gap inside the page-caching part of the performance strategy.

Why warmup itself needs to be managed



Generating a missing cache entry still requires an uncached WordPress request.

Warmup therefore creates server work of its own.

On a small website, requesting all pages periodically may be sufficient. On larger WordPress or WooCommerce installations, a useful warmup system has to become more selective.

It may need to consider:

This is where the difference between merely crawling URLs and actively maintaining cache availability becomes important.

What about the LiteSpeed Cache crawler?



LiteSpeed Cache for WordPress includes a crawler that can warm cached pages, and for suitable installations it can provide basic cache preloading.

However, availability and requirements vary between hosting environments and websites.

The LiteSpeed crawler can be disabled by the hosting provider, and more complex WordPress or WooCommerce installations may require tighter control over crawl timing, server load, cache variants and selective re-warming.

This is the problem Kitt is designed to address.

Kitt operates as a standalone application alongside WordPress rather than as another WordPress plugin. Its purpose is not to replace LiteSpeed Page Cache. LiteSpeed remains responsible for storing and serving the cached pages.

Kitt focuses on making sure those cache entries are generated and maintained before real visitors need them.

It can therefore treat warmup as an operational process rather than simply running through a list of URLs.

The missing step



Page Cache is one of the most effective ways to avoid repeated WordPress execution for cacheable pages.

But there are three separate states:

Page Cache available

The system is capable of caching pages.

Page cached

A usable cache entry for a particular request already exists.

Page cache hit

A visitor requests that entry while it is still available and receives the cached response.

Only the last state delivers the performance benefit to that visitor.

Cache warmup is the process that helps connect the first state with the other two before real traffic arrives.

So when optimizing WordPress performance, enabling Page Cache should not be the end of the caching discussion.

It should lead to the next question:

Who makes sure the cache is populated when it is actually needed?