Changelog

1.4.1 (2026-08-29)#Copied!

On single-site installs, "Flush object cache" and "Purge edge cache" in the command palette now work correctly — they were posting to a multisite-only REST route and returning "No route was found".

The bundled MilliCache update (1.8.0 → 1.8.1) also fixes a subtle caching edge case: query parameters stripped for caching purposes (such as gclid or utm_* via MC_CACHE_IGNORE_REQUEST_KEYS) are now preserved in the live request until the page renders, so redirects from WordPress, WooCommerce, or multilingual plugins like Polylang correctly carry those parameters through to the target URL.

Features#Copied!

  • deps: update MilliCache to 1.8.1 (#54) (83bac72)

Bug Fixes#Copied!

  • commands: cache actions from the command palette on single-site installs (20ff644)

CI#Copied!

  • deps: derive the bundle update commit type from the MilliCache bump (5862843)

Updated to MilliCache 1.8.1#Copied!

  • engine: keep ignored query keys in the request until rendering (f6f7d33)

1.4.0 (2026-08-22)#Copied!

1.4.0 puts every part of MilliCache Pro at your assistant's fingertips and makes edge purging immediate.

Everything MilliCache Pro does is now available as abilities. Caching, cache entries, caching rules (including the ones defined in code), preloading, the edge cache, the object cache, and cache performance can all be inspected and managed through the WordPress Abilities API, over REST and from MCP clients. Together with the abilities that ship in MilliCache itself, an AI assistant can answer "why is my page not cached", clear exactly the right things, and check how well the cache is working.

Edge purges are immediate. Integrations can fire the millicache_edge_purge action with post IDs, flags, paths, or URLs, and the edge is purged before the call returns; media in a separate pull zone included. Queued purges and preloads start within seconds of a content change instead of waiting for the next cron run, and a crashed background worker can no longer hold up pending purges. bunny.net purges get the time they actually need and fail fast when the CDN is unreachable.

Pro actions in the command palette. Purge the edge cache, flush the object cache, and jump straight to the Entries and Rules tabs from the WordPress command palette. The edge purge names your provider, so you always know which CDN you are clearing.

The Entries tab does more. Reload or expire cached pages straight from the Entries browser, watch preload progress appear instantly, and get told when a preload queue is not being drained.

1.4.0 brings the command palette from MilliCache 1.8.0 into Pro, extending it with edge cache and object cache actions alongside the standard clear and expire targets. Two bunny.net reliability fixes ship as well: URL purges no longer send the deprecated async parameter, and the request timeout has been raised to cover the ~7 seconds a real-world purge takes — previously, valid purges were cut off and reported as failures.

Features#Copied!

  • abilities: expose module operations via the WordPress Abilities API (327fb6e)
  • abilities: expose the caching rules, the ones from code included (5c1a43f)
  • abilities: expose what is actually in the cache (c790732)
  • abilities: report how well the cache is working (fcd6995)
  • abilities: roll the Abilities API out across the modules (e455ed3)
  • abilities: say when cache performance is not being recorded (58b304d)
  • cli: list the rules that come from code (714a092)
  • commands: jump straight to the Entries and Rules tabs (f1e83a0)
  • commands: name the provider in the edge purge, and document the palette (6d38202)
  • commands: offer Pro actions in the WordPress command palette (2db1633)
  • commands: purge the edge cache and flush the object cache (824f355)
  • deps: update MilliCache to 1.8.0 (8488bdf)
  • deps: update MilliCache to 1.8.0-beta (6fb40be)
  • deps: update MilliCache to 1.8.0-beta.1 (77e70a8)
  • deps: update MilliCache to 1.8.0-beta.2 (213be9d)
  • deps: update MilliPro to 1.5.4 (6f886d5)
  • edge-cache: gate edge tagging on the engine's storage verdict (865dc86)
  • edge: cap the lifetime the edge is told to keep a page (8393de4)
  • edge: purge the edge instantly, for integrations and everyone else (1260443)
  • entries: reload or expire cached pages, and keep deletions deleted (448dc99)
  • preload: report a queue that nothing is draining (413ea3c)
  • preload: show preload progress instantly in the Entries tab (8609d9d)
  • roll the Abilities API out across the modules (270f854)

Bug Fixes#Copied!

  • abilities: give action arguments their own names (e353aa1)
  • abilities: steady the edge, object cache and preload answers (6805763)
  • commands: give the preload command the menu item's icon (2b5f710)
  • commands: order the palette by intent, not by directory name (6223ed9)
  • edge-cache: enqueue the purge plan as a unique async action (57a4598)
  • edge: drop the async parameter from bunny.net URL purges (9f42bd3)
  • edge: fail fast when the CDN is unreachable (1fdee9f)
  • edge: give bunny.net purges the time they actually need (3d11440)
  • edge: start background work through WP-Cron's own runner (b068e47)
  • edge: tell the edge the entry's effective lifetime (c046f7c)
  • preload: re-warm cache entries again when they are cleared individually (36d639e)
  • preload: show each site's own preload progress on multisite (b81a72a)

Performance#Copied!

  • preload: start preloading right away instead of on the next cron run (f411103)

Updated to MilliCache 1.8.0#Copied!

  • abilities: let assistants read cache status and clear the cache (f80b057)
  • abilities: report network-wide problems in a site's cache status (4e2b9f1)
  • abilities: say whether the install is a multisite (4573485)
  • adminbar: replace one-click flush with command palette integration (382b10b)
  • adminbar: snackbar clear feedback and a wider palette (2c77206)
  • cache: state the lifetime a replayed page has left (8f699fd)
  • clear: report removed-entry counts instead of processed inputs (23ec58f)
  • cli: scope bare clear flags to the WP-CLI site context (d30d31e)
  • commands: let add-ons ride the palette's promote/demote cycle (1db3d3f)
  • commands: offer expire alongside clear with descriptive target labels (880c9eb)
  • engine: capture the page in the outermost output buffer (6c4d393)
  • engine: capture the page in the outermost output buffer (7606f04)
  • engine: capture the page in the outermost output buffer (6cee142)
  • engine: expose the request's effective TTL override (31e2555)
  • rules: build the rule registry when the drop-in has not (b6ef71b)
  • adminbar: keep the admin bar button size stable on page load (2c77206)
  • cache: report targets that belong to another site (6a7947a)
  • clear: anchor path-only URL targets onto the home URL (27bd7dc)
  • clear: skip non-viewable taxonomies in post-related flags (40cd884)
  • commands: drop the stray focus ring after palette clears (880c9eb)
  • commands: stop crowding every admin search, and drop the settings entry (87b52d1)
  • engine: execute the invalidation queue when the drop-in never loads (746bd0e)
  • engine: keep non-default ports in URL-based cache hashes (ed6f3d6)
  • engine: never store redirect responses (6c4d393)
  • engine: never store redirect responses (7606f04)
  • engine: never store redirect responses (6cee142)
  • rules: lock wp-cron.php out of the cache and cover the rest_route form (908ce04)
  • rules: skip an action whose placeholder resolved to nothing (a5e4894)
  • updates: keep update checks off every admin page load (1661d07)

1.4.0-beta.3 (2026-08-21)#Copied!

The edge cache background worker now starts purge and preload jobs through WP-Cron's standard runner instead of calling Action Scheduler internals directly. A crashed worker can no longer stall pending purges until cron cleanup runs — queued jobs start within seconds, so the edge stops serving stale pages much sooner after a purge is triggered. Sites running WP-CLI on https-enforced installs will also see cron spawns correctly use the stored site scheme rather than the CLI context.

Bug Fixes#Copied!

  • edge: start background work through WP-Cron's own runner (b068e47)

1.4.0-beta.2 (2026-08-18)#Copied!

Edge purges now fire instantly instead of waiting for the next cron run — fire millicache_edge_purge and the edge is clean before the action returns, with post IDs, flags, paths, and URLs all accepted in the same call. The queue runner also starts immediately after a content change, so editor saves and cache clears reach the CDN within seconds rather than up to a minute later. When a CDN is unreachable, provider calls time out after 5 seconds and remaining calls in the same request are skipped, capping the worst-case delay at 5 seconds instead of 15 per target. Two documentation updates round out the release: purge scope per CDN provider (bunny.net account-wide, Cloudflare zone-scoped) and when background purges and preloads actually begin.

Features#Copied!

  • edge: purge the edge instantly, for integrations and everyone else (1260443)

Bug Fixes#Copied!

  • edge: fail fast when the CDN is unreachable (1fdee9f)

Performance#Copied!

  • preload: start preloading right away instead of on the next cron run (f411103)

1.4.0-beta.1 (2026-08-16)#Copied!

This beta completes the AI/assistant integration started in 1.4.0-beta and rounds out several areas that surfaced gaps during that work.

Abilities API — the main theme of this release. The WordPress Abilities API now reaches every Pro module. An AI assistant or other client can read which pages are cached and why a URL holds multiple copies, check cache performance figures (hit ratio, bandwidth, response times, and how they compare to the previous period), inspect caching rules including those registered from code, and see whether performance recording is even switched on — previously zeroes came back either way, with no way to tell the difference. Preload, Object Cache, and Rules join Edge Cache, each through the same pattern Edge Cache established. REST exposure follows the module's capability; MCP lists the readable abilities and the preload (recoverable work) and withholds the edge purge and object cache flush, whose costs fall outside the site.

Command palette. Pro's verbs were missing from the WordPress command palette, so the admin bar button showed only half the product. Modules now contribute palette entries the same way they contribute status checks, gated on the module being active and licensed. The full sitemap preload is the first entry. Edge purge and object cache flush follow, with the edge purge kept out of the promoted list since some providers rate-limit a full purge. Entries and Rules gain direct jump commands too. The palette now sorts by intent rather than directory name, and the preload entry carries the same icon as the menu item.

Entries. Row actions now act on the whole page rather than one variant. Reload expires the entry and hands the URL to the preloader so the stored copy keeps serving until the replacement arrives; it only appears when Cache Preloading is active. Expire marks a page stale for the next visitor to rebuild. Delete now really deletes — with preloading active, deletions were being re-queued immediately. "Delete all variants" was also removing only a single entry; that is fixed.

Edge cache. Two fixes to what the edge is told. The live response was reading the configured TTL while the stored copy used the entry's effective one, so a rule that shortens a page's lifetime had no effect on the generating response. Both now read the same source. Separately, the backstop TTL sent to the edge is now capped at one hour — with tag purges handling content changes, the TTL is only a fallback for a purge that never arrives, and there was no reason for it to reach a day. The millicache_edge_ttl filter can still raise the cap.

Preload. A new check detects a queue that nothing is draining — preloaded pages sitting unsent while every other signal reads fine. Once URLs have waited fifteen minutes with none fetched, the status says so and names the likely cause (background tasks not running). On multisite, preload progress was reporting the combined count for all sites; each site now owns its queue.

WP-CLI. wp millicache rules list now shows rules from code alongside stored rules, told apart by a source column. Asking for a code-registered rule by ID no longer says no such rule exists — it says where the rule lives instead.

Features#Copied!

  • abilities: expose module operations via the WordPress Abilities API (327fb6e)
  • abilities: expose the caching rules, the ones from code included (5c1a43f)
  • abilities: expose what is actually in the cache (c790732)
  • abilities: report how well the cache is working (fcd6995)
  • abilities: roll the Abilities API out across the modules (e455ed3)
  • abilities: say when cache performance is not being recorded (58b304d)
  • cli: list the rules that come from code (714a092)
  • commands: jump straight to the Entries and Rules tabs (f1e83a0)
  • commands: name the provider in the edge purge, and document the palette (6d38202)
  • commands: offer Pro actions in the WordPress command palette (2db1633)
  • commands: purge the edge cache and flush the object cache (824f355)
  • deps: update MilliCache to 1.8.0-beta.1 (77e70a8)
  • deps: update MilliCache to 1.8.0-beta.2 (213be9d)
  • deps: update MilliPro to 1.5.4 (6f886d5)
  • edge: cap the lifetime the edge is told to keep a page (8393de4)
  • entries: reload or expire cached pages, and keep deletions deleted (448dc99)
  • preload: report a queue that nothing is draining (413ea3c)
  • roll the Abilities API out across the modules (270f854)

Bug Fixes#Copied!

  • abilities: give action arguments their own names (e353aa1)
  • abilities: steady the edge, object cache and preload answers (6805763)
  • commands: give the preload command the menu item's icon (2b5f710)
  • commands: order the palette by intent, not by directory name (6223ed9)
  • edge: tell the edge the entry's effective lifetime (c046f7c)
  • preload: show each site's own preload progress on multisite (b81a72a)

1.4.0-beta (2026-08-07)#Copied!

1.4.0-beta ships the MilliCache 1.8.0-beta engine, which changes where the page cache captures your HTML. Preload and Edge Cache each pick up reliability fixes alongside it.

The engine now captures the page in the outermost output buffer. MilliCache opens its buffer in the drop-in phase, before WordPress loads any plugins, so it is the last component to see the response rather than the first. Plugins that rewrite the whole page in a buffer of their own now finish before MilliCache stores anything, which means the cached copy matches what a visitor would have received without the cache. Multilingual sites show this most clearly: with TranslatePress, MilliCache used to capture the page before translation ran, so every cache hit served untranslated HTML. Those sites cache correctly now. Redirects are no longer stored either, so a temporary redirect cannot get baked into the cache.

Preload now shows its spinner in the Entries tab the moment you clear entries or kick off a full warm, refreshing the remaining URL count every five seconds so you're never left guessing. Clearing a single entry also re-queues that exact URL for preloading, with one exception: trashed or deleted posts are skipped since their URLs would return a 404.

Edge Cache receives two targeted fixes. Saving a post through Gutenberg with legacy meta boxes (such as Polylang's language selector) previously fired duplicate purge plans; the purge action is now enqueued as a unique async task so the duplicate is dropped while the original runs, and retries still work correctly. Separately, the edge tagger now asks the engine directly whether a response is storable instead of inferring it from headers_sent(), which the outermost buffer makes unreliable. REST, AJAX, admin redirects, and other early-exit responses are correctly marked private instead of being handed to the edge.

Because the buffer change touches every request, this is a release worth testing before it reaches production. WordPress installs opt in with define( 'MC_UPDATE_PRERELEASE', true ); in wp-config.php. Composer projects opt in per package with composer require "millipress/millicache-pro:^1.4@beta", since Composer installs stable versions only by default.

Features#Copied!

  • deps: update MilliCache to 1.8.0-beta (6fb40be)
  • edge-cache: gate edge tagging on the engine's storage verdict (865dc86)
  • preload: show preload progress instantly in the Entries tab (8609d9d)

Bug Fixes#Copied!

  • edge-cache: enqueue the purge plan as a unique async action (57a4598)
  • preload: re-warm cache entries again when they are cleared individually (36d639e)

Updated to MilliCache 1.8.0-beta#Copied!

  • adminbar: replace one-click flush with command palette integration (382b10b)
  • adminbar: snackbar clear feedback and a wider palette (2c77206)
  • clear: report removed-entry counts instead of processed inputs (23ec58f)
  • cli: scope bare clear flags to the WP-CLI site context (d30d31e)
  • commands: offer expire alongside clear with descriptive target labels (880c9eb)
  • engine: capture the page in the outermost output buffer (7606f04)
  • adminbar: keep the admin bar button size stable on page load (2c77206)
  • clear: anchor path-only URL targets onto the home URL (27bd7dc)
  • clear: skip non-viewable taxonomies in post-related flags (40cd884)
  • commands: drop the stray focus ring after palette clears (880c9eb)
  • engine: execute the invalidation queue when the drop-in never loads (746bd0e)
  • engine: keep non-default ports in URL-based cache hashes (ed6f3d6)
  • engine: never store redirect responses (6cee142)

1.3.0 (2026-07-29)#Copied!

Cache Preloading now discovers every sitemap declared in robots.txt on each run, so multilingual sites (e.g. The SEO Framework with Polylang) warm all languages automatically without touching settings. The Sitemap URL setting becomes Sitemaps and accepts multiple paths or full URLs when you need to override what's discovered. The Status tab and wp millicache preload report each sitemap's result individually.

Object cache setup is more resilient across the board. MC_OBJECT_CACHE_ACTIVE now works in both directions — set it to true to install the drop-in, false to remove it, and the toggle shows as locked in the admin UI. When wp-content isn't writable the toggle locks and explains why; REST and CLI activations revert automatically if the install fails; and the Status tab surfaces a missing drop-in rather than showing the module as simply off. The drop-in also re-points itself after atomic deploys and plugin reactivation. MC_LICENSE_KEY can now be supplied via wp-config.php alongside MC_OBJECT_CACHE_ACTIVE — docs cover both.

Bundled MilliCache moves from 1.7.6 to 1.7.7. The headline fix there is multisite metrics: response times, bandwidth, and stale-serve counts were silently dropped on network installs, leaving Insights charts flat.

Features#Copied!

  • deps: update MilliCache to 1.7.7 (#41) (0d92545)
  • object-cache: follow the MC_OBJECT_CACHE_ACTIVE constant in both directions (bc05a5a)
  • object-cache: prevent broken activations and heal the drop-in on deploys (c0e18d2)
  • preload: preload every sitemap listed in robots.txt (bc52355)

Bug Fixes#Copied!

  • deps: require MilliPro 1.5.3 (141d970)
  • object-cache: attach silently while the engine is still booting (40bab37)

Updated to MilliCache 1.7.7#Copied!

  • dropins: share install reporting and heal extension drop-ins (800111c)
  • engine: expose readiness for exception-free drop-in probes (24b8d37)
  • status: report when the config file cannot be written (54f2e82)
  • deps: require millipress/millibase ^2.8.0 (dd906d9)
  • metrics: record response times and honor retention on multisite (087e764)
  • Reinstall an already-correct drop-in symlink when --force is passed (3b2ed2f)

1.2.1 (2026-07-28)#Copied!

Edge cache purges now mirror MilliCache's own flag batches exactly, so bunny.net and Cloudflare always purge the same set of entries that MilliCache cleared, including wildcard flag patterns. This requires the bundled MilliCache 1.7.6, which also gains a low-memory warning on the Status screen.

Module toggle state for Preload and Block Editor is migrated from .enabled to .active to match all other modules; existing settings carry over automatically.

Features#Copied!

  • deps: update MilliCache to 1.7.6 (#38) (4b6ecd5)
  • edge-cache: mirror every cache clear through MilliCache's flag batch (4518614)

Bug Fixes#Copied!

  • entries: show titles and post type labels with their special characters (875368e)
  • object-cache: persist WP-CLI writes when the engine boots late (4565e6d)

Refactoring#Copied!

  • modules: unify module on/off toggles on the .active settings key (8a748e1)

Updated to MilliCache 1.7.6#Copied!

  • engine: announce every cache clear as one merged flag batch (e2f1513)
  • status: warn before the storage server runs out of memory (a4fc9e6)
  • cli: give the interactive redis-cli session the real terminal (14e2128)

1.2.0 (2026-07-24)#Copied!

Sites running behind a host-managed CDN — Kinsta, WP Engine, and similar Cloudflare-Enterprise platforms — have had a silent problem: the host strips cache tags in transit, so edge purges matched nothing and stale content kept serving. This release fixes that end-to-end. A new Host CDN compatibility setting emits tags under a neutral header that a one-time Cloudflare Cache Response Rule converts back into cache tags on your zone, restoring purging. The Status tab now detects the condition too: instead of reporting Edge Cache as Active while purges silently fail, it explains what is happening and points to the setting and the matching zone rule.

Features#Copied!

  • deps: update MilliCache to 1.7.5 (#36) (1ecef1c)
  • edge: keep purging working behind host CDNs like Kinsta and WP Engine (56f0404)
  • edge: warn on the Status tab when a host CDN blocks purging (f975dd6)
  • release: include bundled MilliCache changes in the changelog and release notes (5031673)

Bug Fixes#Copied!

  • metrics: keep the dashboard date range from going stale (81b76bf)
  • metrics: warn when the seed day count is clamped (c86b169)
  • release: unbreak the polish workflow file (cea6758)

Updated to MilliCache 1.7.5#Copied!

  • cache: clear a post's cache when it is unpublished (43a1a88)
  • cache: clear feed caches when a post is published or updated (b04ede8)
  • cache: fire millicache_cache_cleared_by_posts on automatic post invalidation (6615c7d)
  • engine: accept Vary tokens covered by request keying or inert on GET (53ad7b7), closes #172
  • engine: resolve Authorization bucket from redirect and basic-auth channels (7e7ed1b)
  • storage: prevent a fatal error when toggling MilliCache alongside MilliCache Pro (1ad4949)

1.1.0 (2026-07-22)#Copied!

MilliCache Pro now speaks your language. This release wires the plugin into the same language-pack delivery that ships translations for MilliCache, so a site running in German, Portuguese, or any other translated locale sees Pro's settings, modules, and command output in that language, updated automatically as new translations land. Along the way, composed interface strings were made properly translatable and JS translations are now served as full catalogs, so switching languages covers every corner of the settings screen.

The bundled MilliCache moves to 1.7.4, which brings the language-pack installation this release builds on and corrects the endpoint the updater checks for new versions.

Features#Copied!

  • deps: update MilliCache to 1.7.4 (#35) (8608732)
  • i18n: register millicache-pro with the core language-pack injector (69ff2ea)
  • i18n: register the millipro text domain for language-pack delivery (352ec2e)

Bug Fixes#Copied!

  • i18n: make composed UI strings translatable (cd65e3a)
  • i18n: serve JS translations as handle-named full catalogs (05a163c)

Refactoring#Copied!

  • i18n: follow the millicache_translation_domains filter rename (928e0a7)

Updated to MilliCache 1.7.4#Copied!

  • i18n: install language packs from the millipress.com languages API (dd2d73d)
  • release: post a single Discord notification on stable release (57b0def)
  • i18n: serve JS translations as handle-named full catalogs (747594a)
  • updater: Correct endpoint URL for plugin update information (46611ad)

1.0.0 (2026-07-19)#Copied!

Welcome to MilliCache Pro, the premium extension that turns MilliCache's fast, reliable full-page cache into a complete performance toolkit for WordPress. Pro is built as a set of modules you switch on individually, so your site runs exactly the features you need and nothing more. Here is everything the first release brings.

Caching#Copied!

  • Visual Rules Builder: decide what gets cached, and for how long, from a point-and-click editor. Target pages by URL, template, post type, preview state, and time-based conditions, all without touching code.
  • Block Editor intelligence: precise cache invalidation that understands the modern editor, clearing exactly the right pages when you update synced patterns, Query Loops, or Site Editor templates.
  • Cache Preloading: keep the cache warm automatically. Pro rebuilds pages from your sitemap after you publish and after a full clear, so visitors almost always land on a cached page.
  • Cache Entries Browser: see inside the cache. Browse, search, and delete every cached page and its variants from a dedicated tab.

Content Delivery#Copied!

  • Edge Cache: serve whole cached pages from bunny.net or Cloudflare's global edge, purged in lockstep with your local cache so readers never see stale content.
  • Asset CDN: offload static files (CSS, JS, images, fonts) to a pull zone and rewrite their URLs for you, with flexible include and exclude matching.

Insights#Copied!

  • Detailed Metrics: a Status-dashboard view of requests, hit rate, bandwidth, and response times, with the estimated time your cache has saved.

Storage & Reliability#Copied!

  • Persistent Object Cache: a drop-in object cache backed by the same storage connection as your page cache, self-healing when the drop-in goes missing.
  • High-Availability Storage Connections: a visual editor for Redis replica and Sentinel topologies, plus per-site key prefixes.

Platform#Copied!

  • Full multisite awareness: modules configure themselves where their feature lives, whether per-site, network-wide, or both. Entries and Rules understand network-level data.
  • License management and automatic updates: activate your license in the settings screen and receive signed updates directly in WordPress.
  • WP-CLI throughout: list and toggle modules, manage rules, trigger preloads, and reinstall drop-ins from the command line.

Thank you for choosing MilliCache Pro. Every module here exists to make your site faster with less effort, so enable the ones you need and get back to building.

Last updated:

Release updates

Get notified when new versions and guides ship. No spam.

By subscribing you agree to our Privacy Policy.­ Double opt-in, no spam, unsubscribe anytime.