NimbleCache features

Every feature, grouped by what it does. All 27 are in every plan.

$19 a year for one site · or pay once from $49

See the plans

The engine

5 features

The NimbleCache dashboard in WordPress admin. A green notice reads The cache is on and pages are served before WordPress loads. Four cards show 11 pages cached (2 MB), an average build of 229 ms, a 12 hour page lifetime and preloading off. A Fast Path panel ticks off advanced-cache.php installed and current, WP_CACHE switched on in wp-config.php, the cache directory writable and compressed pages. An Exclusions panel lists what is never cached, and a Clearing Log lists recent full clears with the plugin that probably caused each.
The dashboard checks that the cache is really running before WordPress loads, and keeps a log of what cleared the whole cache and why.
  • Answers before WordPress loads

    A cached page is served from wp-content/advanced-cache.php, which runs before the database connects and before a single plugin is read.

    More: Answers before WordPress loads

    The whole hit costs one file include, one hash and one file read — not a WordPress bootstrap with the theme skipped.

  • Works on the hosting you already have

    The cache is files on disk, which is the one thing every host has.

    More: Works on the hosting you already have

    There is nothing to install alongside it and no command line to open. The one step that can need a hand is a single line in wp-config.php: the plugin writes it, and if the file is locked it shows you the line to paste.

  • A hundred visitors, one rebuild

    When a popular page expires, the first request rebuilds it and everyone else is handed the slightly stale copy rather than joining in.

    More: A hundred visitors, one rebuild

    Without that, a traffic spike on an expiring page turns into a hundred identical page builds — which is how a busy morning becomes an outage.

  • Compressed once, not on every visit

    A gzipped copy is written alongside the page when it is stored, so serving it costs nothing.

    More: Compressed once, not on every visit

    Compressing on every request would throw away most of what the cache just saved.

  • Answers "have you got this already?"

    A returning visitor's browser asks whether its copy is still current on every navigation.

    More: Answers "have you got this already?"

    This answers properly with a 304 and no body, which saves the whole page transfer — a bigger win than the cache hit itself.

Knowing what it did

4 features

The Diagnostics tab. An address for the Classic Pullover Hoodie with utm_source, utm_campaign and fbclid parameters has been tested. The answer reads This address can be cached, for a signed-out visitor with no cart, stored as the plain product address without the parameters, with a copy on disk built 2 minutes ago. Below, Checked live: the second request was served from the cache, and a note that Cloudflare sits in front of the site but did not store the page.
Give Diagnostics an address and it says whether it can be cached, which tracking parameters it drops, and fetches it to prove the second visit came from the cache.
  • Tells you exactly why a page was not cached

    Type an address into Diagnostics and it runs the real decision — the same code the live path runs, not a description of it — names the rule that applied and explains it in a sentence.

    More: Tells you exactly why a page was not cached

    Then it fetches the page twice and reports what the server actually did.

  • Says why pages were built but not kept

    When the Dashboard shows few pages cached, a panel lists why WordPress built pages that the cache then refused, over the last seven days, busiest first.

    More: Says why pages were built but not kept

    When a plugin's cookie is to blame it names the cookie, in the panel and in the response header, a PHP session's PHPSESSID included, and each line opens Diagnostics on an example page. The counts are samples, at most one a minute, keep no visitor data, and can be cleared once the cause is fixed.

  • Shows what cleared the whole cache, and who

    A cache that keeps going cold is nearly always something clearing it.

    More: Shows what cleared the whole cache, and who

    The Dashboard lists the last 30 times the whole cache was cleared from this site, with the reason (a menu saved, a plugin updated, the Clear button, or the plugin that asked, marked "probably" when that is worked out from where the request came from), who was signed in (someone who works on the site, never a customer) and the pages removed. Past 10 in a day it names the reason seen most and what to do about it.

  • Shows you what it does about your other plugins

    An Integrations screen that names what it found — WooCommerce, Easy Digital Downloads, WPML, Polylang, TranslatePress — and lists exactly what it does about each.

    More: Shows you what it does about your other plugins

    Almost none of it is a setting, because a cart page is not cacheable whatever anybody ticks. It is there so you can see the work rather than take it on trust.

Staying correct

8 features

The Rules tab. Cache on offers Everywhere on the site (selected), The front page only, Shop and product pages, and Only what I choose below. An Exclude panel lists common exclusions such as front page, blog index, search results, 404 page and shop page, and boxes for excluded pages and addresses. On the right, Ignored Query Parameters lists utm_source, utm_medium, utm_campaign, utm_term, utm_content and utm_id, above a Cookie Exclusions box.
Choose what is cached: everywhere, the front page, shop pages or exactly the places you tick, with the exclusions and ignored tracking parameters beside them.
  • Throws away the page you changed, not the whole cache

    Edit a post and it purges that post, the front page, its categories, tags, author page, archives and feeds.

    More: Throws away the page you changed, not the whole cache

    Not everything. Emptying the lot because one thing changed is why so many sites run a cache that never warms up. A page that lists posts in a way it cannot work out, such as a news page built with a Query Loop, can be added to the pages it clears with them.

  • A shop that stays correct

    The cart, checkout and account pages are never cached.

    More: A shop that stays correct

    Anyone with something in their cart stops getting cached pages entirely. Price and stock changes purge the product, its category and the shop page the moment WooCommerce reports them.

  • Query strings handled properly

    Tracking parameters are stripped before the lookup, so an advert click and a direct visit share one cached page.

    More: Query strings handled properly

    Real parameters — sorting, filtering, pagination — are kept, so a filtered product list still caches separately. Most caches treat any query string as uncacheable and give up on shops.

  • Cannot be poisoned by a Host header

    The cache identity is built from your site's own address, frozen when settings are saved.

    More: Cannot be poisoned by a Host header

    Building it from the request's Host header is the classic way a cache ends up serving one visitor a page an attacker wrote.

  • Choose exactly which pages are cached

    Cache everything, or only the front page, or only the kinds of content you tick — posts, pages, products, any custom type — plus category and tag archives, plus individual pages found by searching for them.

    More: Choose exactly which pages are cached

    The same control every other Traslatability plugin uses to answer "where does this apply", so you already know how to work it.

  • A ceiling on how much disk it may use

    Optional, and off by default because a cache is meant to grow.

    More: A ceiling on how much disk it may use

    Set one and the pages nobody has needed for longest are cleared first, a few at a time in the background, until it is back under. No cache has ever been improved by filling a hosting allowance.

  • Clears the cache in front of it too

    Behind Cloudflare or a host's own page cache, clearing one copy is not enough.

    More: Clears the cache in front of it too

    Diagnostics quotes the header sent by the cache that answered and names that cache where the header says whose it is. Every page NimbleCache clears is passed on to it through Cloudflare's plugin, Nginx Helper, Proxy Cache Purge, SiteGround, Breeze, LiteSpeed Cache, Kinsta or WP Engine, each within what that plugin's own settings allow. The other cache is cleared whole only when you press Clear the whole cache, and a save does not wait for any of it where PHP runs through PHP-FPM or LiteSpeed.

  • Multilingual and multi-currency aware

    A language in the address caches separately by itself.

    More: Multilingual and multi-currency aware

    A language held in a cookie — Polylang, WPML, TranslatePress — becomes part of the cache identity, so the first visitor's language does not decide everybody's.

Getting ahead

3 features

The Integrations tab. A WooCommerce panel marked Active lists that the cart, checkout and account pages are never cached, nor any page once a shopper has something in their cart, and that a product is cleared when its price or stock changes. Panels for Members and personal pages and Site-wide changes are also Active; Easy Digital Downloads and translated sites are marked Not installed. The Cache in Front panel begins at the bottom.
It already knows what to do about WooCommerce, members' pages and site-wide changes, and says so plainly.
  • Warms pages up from your own sitemap

    Optional, off by default, and deliberately unhurried: a few pages every five minutes, taken from the sitemap your SEO plugin already keeps — the list of pages the site itself says matter, with everything you set to noindex left out.

    More: Warms pages up from your own sitemap

    A preloader that takes the site down in order to warm it up has misunderstood the job.

  • Backs off on a small or busy server

    Before any background work runs, the plugin reads what the host will actually spare — memory limit, execution limit, load average — and halves its own rate on a small host, or stands down entirely while the server is busy.

    More: Backs off on a small or busy server

    You never have to work out what your hosting can take, because the answer changes and the plugin asks every time.

  • Pages that open before the click

    Chrome and Edge can fetch a page before it is clicked, and WordPress asks them to as a link is pressed.

    More: Pages that open before the click

    NimbleCache can start a cached page loading as the pointer rests on its link instead, and never fetches a page it does not cache: not the cart, the checkout, account pages or your exclusions. Signed-in visitors and shoppers with something in their cart get none of it. It builds on WordPress's own speculative loading, and adds the same on WordPress before 6.8.

Honest by default

2 features

  • Leaves nothing behind

    Deactivating removes the drop-in and takes WP_CACHE back out of wp-config.php immediately.

    More: Leaves nothing behind

    A deactivated cache plugin with a live drop-in is a site serving pages nothing is purging — the worst state of all, and the one people find a week later.

  • Never writes to the database on a cache hit

    A hit is a file read and nothing else — no counter, no statistics row, no connection.

    More: Never writes to the database on a cache hit

    Everything the dashboard shows is either counted from disk or recorded on the page builds, which had already paid for WordPress.

Everywhere

5 features

  • Works on a network

    Activate it on one site or across a whole multisite network.

    More: Works on a network

    Each site keeps its own settings and its own cached pages, and a site added later is set up on its own.

  • Spanish and French included

    Every string in the plugin, the admin screens and the licence page is translated into Spanish and French.

  • An admin that never reloads

    Every screen in the plugin arrives without a page load, and every save happens where you are standing.

    More: An admin that never reloads

    WordPress fetches the whole of wp-admin's CSS and JavaScript again to change one panel; this fetches the panel. The screen you are on is still there while the next one is on its way, and the one you are heading for is usually already in hand — a pointer takes a moment to reach a menu item, and that moment is spent fetching.

  • Saved, and told so where you are looking

    A save answers in the corner of the screen, bordered in the colour of what it is telling you and saying what was saved rather than just "Saved".

    More: Saved, and told so where you are looking

    Four seconds, and hovering holds it open. No reload, and no scrolling back to find a notice above the header three hundred pixels from the button you just pressed.

  • Tabs that change instantly

    A WordPress admin request spends about a second in its own bootstrap before a plugin gets a word in, and fetching when your pointer arrives only buys back a fraction of it.

    More: Tabs that change instantly

    So the plugin's other screens are fetched quietly while you read the first one — one at a time, only while the browser is idle, and never on a metered connection. By the time you click a tab the answer has been in memory for seconds.

Pricing

Every plan includes every feature. Choose how many domains, and whether to pay yearly or once.

Pay yearly renews until you cancel

1 domain One year of updates and support
$19a year
5 domains One year of updates and support
$29a year
Unlimited domains One year of updates and support
$39a year

Pay once (lifetime) no renewals

5 domains Updates and support for as long as we publish it
$49once
Unlimited domains Updates and support for as long as we publish it
$69once
  • Every plan includes every feature. You choose only the number of domains.
  • 30-day refund, no reason needed. Refund policy
  • Licence key and download straight after payment, by Stripe.
  • A lapsed licence stops updates and support. It never switches a feature off.
  • Local, development and staging copies are free and do not count against your domains.
  • Yearly plans renew at the then-current price until you cancel. Cancel any time from your account.
  • Where tax applies it is calculated at checkout and shown before you pay.

Licence questions