Àpèjúwe
Flexa Cache is a full-featured WordPress page-cache and front-end optimization plugin. It installs a self-contained advanced-cache.php drop-in that serves compressed static HTML files before WordPress even loads — the same technique used by WP Fastest Cache and W3 Total Cache — giving you maximum TTFB improvement on both Apache and nginx hosts.
Page Cache
- Static HTML cache served by a pre-WordPress drop-in (no PHP/MySQL on cache hits)
- Gzip pre-compressed
.gzfiles served natively - Separate mobile cache variant (
index-mobile.html) when Mobile Theme is enabled - Smart invalidation: purge on new post, updated post, comments, theme/menu/widget changes, and WooCommerce product/stock updates
- Per-URL cache purge from the admin UI, WP-CLI, or REST API
- Cache preloader via Action Scheduler (or WP-Cron fallback) with start/cancel/status controls
- Widget output cache with O(1) versioned-key invalidation
Front-End Optimization
- Minify HTML (whitespace collapse) and Minify HTML Plus (inline CSS/JS trim)
- Minify CSS and Minify CSS Plus (deeper punctuation squeeze)
- Combine CSS — adjacency-only buffer fusion preserving cascade order
- Combine JS / Combine JS Plus — concatenate header and footer scripts
- Gzip — mod_deflate
.htaccessblock for dynamic (non-cached) responses - Browser Caching — Expires/Cache-Control
.htaccessblock - Disable Emojis — remove WordPress emoji scripts, styles, and DNS prefetch
- Lazy Load — native
loading="lazy"+decoding="async"on images and iframes - Render Blocking JS — add
deferto render-blocking scripts - Google Fonts Async — rewrite Google Fonts
<link>to preload +onloadswap with<noscript>fallback - Delay JS — neutralise non-critical external scripts until first user interaction or 7-second idle fallback
Developer-Friendly
- WP-CLI:
wp flexa-cache clear [--url=<url>],wp flexa-cache status,wp flexa-cache preload [start|status|cancel] - REST API:
/flexa-cache/v1/cache/purge,/cache/stats,/cache/preload - Filterable hooks:
flexa_cache/engine/is_cacheable,flexa_cache/engine/buffer,flexa_cache/store/dir,flexa_cache/purged,flexa_cache/settings/languages, and more - Kill switch:
?flexa_cache_optimize=0disables optimization for a single admin request - Exclusion lists for URLs, cookies, user agents, CSS handles, and JS handles
Object Cache (Redis)
- Persistent Redis object cache: caches WordPress options, transients, and post/term/user meta and query results across requests, cutting database load
- Installs a self-contained
object-cache.phpdrop-in with an in-memory L1 + Redis L2 layout - One-click enable/disable and a “Test & save connection” form that writes the config to
wp-config.php(secrets never touch the database) - Crash-safe by design: if Redis becomes unreachable the site keeps running (degrades to in-memory) with an admin notice and a circuit breaker — never a white screen
- Serializers (PHP, igbinary, JSON, msgpack) and compression (LZ4, Zstd, LZF), key prefetch, and alloptions splitting
- Live analytics: hit-ratio / operations / memory charts, a per-group key table, Query Monitor panel, and WP-CLI (
analytics,watch,groups,slowlog) - Multisite aware, with per-site and network flush scopes
- Advanced Redis topologies — Cluster, Sentinel, Replicated (master/replica), and the Relay/Predis clients — are available through the separate Flexa Cache Pro add-on
Source code for compiled JavaScript and CSS
The plugin ships a compiled admin UI in assets/dist/. The human-readable
source (apps/admin/src) and the build tooling are publicly available at:
https://github.com/flexatech/flexa-cache
The admin UI is built with npm and Vite:
npm installnpm run build(ornpm run devfor a watched dev build with HMR)
Ìgbéwọlẹ̀
- Upload the plugin files to
/wp-content/plugins/flexa-cache, or install through the WordPress Plugins screen. - Activate the plugin through the Plugins screen.
- Open Flexa Cache from the admin sidebar (located below Settings).
- Enable the Cache System toggle and click Save Settings.
After a plugin update: deactivate and reactivate Flexa Cache once so the advanced-cache.php drop-in is refreshed. This step is only needed after an update that changes the drop-in — the release notes will say so when it applies.
FAQ
-
How does the page cache work?
-
On activation, Flexa Cache installs an
advanced-cache.phpdrop-in intowp-content/and addsdefine('WP_CACHE', true)towp-config.php. On the next uncached request, the plugin generates a static HTML file. Every subsequent request for that URL is served directly from the file — no PHP execution, no database query. -
Does Flexa Cache work with WooCommerce?
-
Yes. Cart, checkout, and account pages are automatically excluded from the cache. The cache is also purged when a productÌtumọ̀ Yorùbá: ’s stock level or price changes.
-
Does it work on nginx?
-
The static file cache works on any server (the drop-in uses PHP
readfile()). The Gzip and Browser Caching toggles write Apache.htaccessrules; the pluginÌtumọ̀ Yorùbá: ’s class docblocks include the nginx equivalent snippets for hosts that need them. -
How do I clear the cache?
-
Click Delete Cache in the Flexa Cache settings page, use
wp flexa-cache clearfrom the command line, or callPOST /wp-json/flexa-cache/v1/cache/purge. To clear a single URL, use the per-URL input in the Cache Stats panel orwp flexa-cache clear --url=https://example.com/page/. -
What does “Minify JS” do?
-
The Minify JS toggle is a documented safe no-op when used alone. JavaScript is only ever concatenated (via Combine JS), never minified in isolation — the plugin ships no JS parser. If you want JS minification, enable Combine JS together with Minify JS.
-
Will it conflict with other caching plugins?
-
Flexa Cache checks for a foreign
advanced-cache.phpon activation and refuses to overwrite it. If you already have a caching plugin installed, deactivate it and remove its drop-in before activating Flexa Cache. -
Where are the plugin settings?
-
In the WordPress admin sidebar, click Flexa Cache (located below Settings). Settings are organised into five sections: Cache, Invalidation, Performance, Exclusions, and Danger Zone.
-
What is the Object Cache and do I need Redis?
-
The Object Cache is a persistent store for WordPressÌtumọ̀ Yorùbá: ’s internal data (options, transients, meta, query results) that normally lives in the database. Backing it with Redis means those lookups are served from memory across requests, which reduces database load — especially on WooCommerce and other dynamic sites. It requires a reachable Redis server and the PHP
redisextension. It is independent of the page cache; you can run either or both. -
What happens if Redis goes down?
-
Nothing breaks. Flexa Cache detects the failure mid-request, serves from its in-memory layer for the rest of the request, and opens a short-lived circuit breaker so the next requests do not stampede a dead server. An admin notice and a Site Health warning appear, and the cache recovers automatically once Redis is back.
-
Does enabling the Object Cache store my Redis password in the database?
-
No. The connection settings (including the password) are written to a marked block in
wp-config.php, never to the options table, and the password is masked in every diagnostic, REST, and CLI output. -
Can I use Redis Cluster, Sentinel, or Relay?
-
Those advanced topologies (Cluster, Sentinel, Replicated master/replica, and the Relay/Predis clients) ship in the separate Flexa Cache Pro add-on. The free plugin covers a single Redis server, which suits the large majority of sites.
Àwọn àgbéyẹ̀wò
Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.
Àwọn Olùkópa & Olùgbéejáde
“Flexa Cache” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.
Àwọn OlùkópaTúmọ̀ “Flexa Cache” sí èdè rẹ.
Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?
Ṣàwárí koodu, ṣàyẹ̀wò ibi ìpamọ́ SVN, tàbí ṣe àgbékalẹ̀ sí àkọsílẹ̀ ìdàgbàsókè nípasẹ̀ RSS.
Àkọsílẹ̀ àwọn àyípadà
1.1.1
- Fix: Delay JS / Render-Blocking JS / Combine JS no longer break scripts that carry inline code. A script with
wp_add_inline_script()before/after data (most visibly WordPress coreÌtumọ̀ Yorùbá: ’swp-i18n, whose after-script callswp.i18n.setLocaleData()) is now left un-delayed, un-deferred, and un-combined, because that inline companion runs at parse time and would otherwise throw “wp is not defined”. The Combine JS path recovers the handle from the tagÌtumọ̀ Yorùbá: ’sidattribute so it can protect the same scripts even though it operates on the rendered buffer. This also resolves knock-on breakage of scripts that depend on those globals. - Fix: the admin-bar “Flexa Cache” submenu no longer stays hidden on hover when JS optimization is enabled. The WordPress toolbar script depends on
hoverintent-js; Combine JS / Delay JS / Render-Blocking now auto-exclude it alongsideadmin-bar(it was previously left in), so the submenu opens reliably. - Compatibility: tested and confirmed working with WordPress 7.1. No other code changes were required — the admin app loads only on the pluginÌtumọ̀ Yorùbá: ’s own settings screen (not the iframed block editor) and uses no
@wordpress/components, jQuery UI, or block-editor assets affected by 7.1.
1.1.0
- New: Object Cache (Redis) module — a persistent object cache installed as an
object-cache.phpdrop-in (in-memory L1 + Redis L2). Caches options, transients, and meta/query data across requests. - New: admin Object Cache tab — status banner, “Test & save connection” (writes
wp-config.php, secrets never in the database), metrics, groups table, and flush controls. - New: crash-safe resilience — in-request degrade to in-memory, cross-request circuit breaker with cooldown,
on_errorpolicy, and a Site Health check. Redis outages never cause a white screen. - New: serializers (PHP/igbinary/JSON/msgpack) and compression (LZ4/Zstd/LZF), key prefetch, alloptions splitting, and per-
*-queriesTTL. - New: observability — hit-ratio/ops/memory analytics, per-group key table, Query Monitor panel, request footnote, and a vendor-neutral
flexa_cache/object_cache/tracehook. - New: WP-CLI
wp flexa-cache oc(enable,disable,status,flush,diagnostics,analytics,watch,groups,slowlog,cli,reset), and REST endpoints under/flexa-cache/v1/object-cache. - New: multisite support with per-site and network flush scopes; TLS, unix socket, and ACL (username) connections.
- Note: advanced Redis topologies (Cluster, Sentinel, Replicated, Relay/Predis) are provided by the separate Flexa Cache Pro add-on.
1.0.3
- Cleanup: removed the unused
/pingstarter REST endpoint left over from the plugin scaffold. - Docs: the readme source-code section now documents the build tooling (
npm installnpm run build) alongside the public repository link.
1.0.2
- Fix: CSS minify (aggressive HTML minify and CSS combine) no longer strips whitespace around
:, which previously fused descendant combinators into compound selectors before a pseudo-class (:root :where(…):root:where(…)) and silently dropped WordPress global-styles rules — most visibly Gutenberg button styles. Whitespace around{ } ; ,is still collapsed.
1.0.1
- Security: cache purge, stats, and preload REST endpoints now require the
manage_optionscapability instead ofupload_files, so only administrators can trigger site-wide cache operations. - Hardening: cached widget output is now passed through
wp_kses_post()before it is echoed. - Cleanup: removed a dead pre-WordPress-5.7 raw
<script>fallback in the delay-JS loader; the corewp_print_inline_script_tag()helper is now always used. - CSS/JS combine and minify now rewrite the URL of the stylesheet/script tag WordPress already enqueued and printed, instead of emitting a freshly-built tag — preserving the original tag attributes.
1.0.0
- Initial release: page cache drop-in, 23 optimization toggles, WP-CLI, REST API, cache preloader, widget cache, mobile theme cache, i18n-ready.
