{"id":336362,"date":"2026-07-12T04:30:46","date_gmt":"2026-07-12T04:30:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flexa-cache\/"},"modified":"2026-07-12T04:30:38","modified_gmt":"2026-07-12T04:30:38","slug":"flexa-cache","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/flexa-cache\/","author":23412324,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.1","requires":"5.9","requires_php":"8.2","requires_plugins":null,"header_name":"Flexa Cache","header_author":"FlexaTech","header_description":"Flexa Cache for WordPress.","assets_banners_color":"fdfdfd","last_updated":"2026-07-12 04:30:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"flexatech","date":"2026-07-12 04:30:38"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3604442,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3604442,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3604442,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3604442,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[146,187,3853,247,794],"plugin_category":[52,54],"plugin_contributors":[255540],"plugin_business_model":[],"class_list":["post-336362","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-optimization","plugin_tags-page-cache","plugin_tags-performance","plugin_tags-speed","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-flexatech","plugin_committers-flexatech"],"banners":{"banner":"https:\/\/ps.w.org\/flexa-cache\/assets\/banner-772x250.png?rev=3604442","banner_2x":"https:\/\/ps.w.org\/flexa-cache\/assets\/banner-1544x500.png?rev=3604442","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/flexa-cache\/assets\/icon-128x128.png?rev=3604442","icon_2x":"https:\/\/ps.w.org\/flexa-cache\/assets\/icon-256x256.png?rev=3604442","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Flexa Cache is a full-featured WordPress page-cache and front-end optimization plugin. It installs a self-contained <code>advanced-cache.php<\/code> drop-in that serves compressed static HTML files before WordPress even loads \u2014 the same technique used by WP Fastest Cache and W3 Total Cache \u2014 giving you maximum TTFB improvement on both Apache and nginx hosts.<\/p>\n\n<p><strong>Page Cache<\/strong><\/p>\n\n<ul>\n<li>Static HTML cache served by a pre-WordPress drop-in (no PHP\/MySQL on cache hits)<\/li>\n<li>Gzip pre-compressed <code>.gz<\/code> files served natively<\/li>\n<li>Separate mobile cache variant (<code>index-mobile.html<\/code>) when Mobile Theme is enabled<\/li>\n<li>Smart invalidation: purge on new post, updated post, comments, theme\/menu\/widget changes, and WooCommerce product\/stock updates<\/li>\n<li>Per-URL cache purge from the admin UI, WP-CLI, or REST API<\/li>\n<li>Cache preloader via Action Scheduler (or WP-Cron fallback) with start\/cancel\/status controls<\/li>\n<li>Widget output cache with O(1) versioned-key invalidation<\/li>\n<\/ul>\n\n<p><strong>Front-End Optimization<\/strong><\/p>\n\n<ul>\n<li>Minify HTML (whitespace collapse) and Minify HTML Plus (inline CSS\/JS trim)<\/li>\n<li>Minify CSS and Minify CSS Plus (deeper punctuation squeeze)<\/li>\n<li>Combine CSS \u2014 adjacency-only buffer fusion preserving cascade order<\/li>\n<li>Combine JS \/ Combine JS Plus \u2014 concatenate header and footer scripts<\/li>\n<li>Gzip \u2014 mod_deflate <code>.htaccess<\/code> block for dynamic (non-cached) responses<\/li>\n<li>Browser Caching \u2014 Expires\/Cache-Control <code>.htaccess<\/code> block<\/li>\n<li>Disable Emojis \u2014 remove WordPress emoji scripts, styles, and DNS prefetch<\/li>\n<li>Lazy Load \u2014 native <code>loading=\"lazy\"<\/code> + <code>decoding=\"async\"<\/code> on images and iframes<\/li>\n<li>Render Blocking JS \u2014 add <code>defer<\/code> to render-blocking scripts<\/li>\n<li>Google Fonts Async \u2014 rewrite Google Fonts <code>&lt;link&gt;<\/code> to preload + <code>onload<\/code> swap with <code>&lt;noscript&gt;<\/code> fallback<\/li>\n<li>Delay JS \u2014 neutralise non-critical external scripts until first user interaction or 7-second idle fallback<\/li>\n<\/ul>\n\n<p><strong>Developer-Friendly<\/strong><\/p>\n\n<ul>\n<li>WP-CLI: <code>wp flexa-cache clear [--url=&lt;url&gt;]<\/code>, <code>wp flexa-cache status<\/code>, <code>wp flexa-cache preload [start|status|cancel]<\/code><\/li>\n<li>REST API: <code>\/flexa-cache\/v1\/cache\/purge<\/code>, <code>\/cache\/stats<\/code>, <code>\/cache\/preload<\/code><\/li>\n<li>Filterable hooks: <code>flexa_cache\/engine\/is_cacheable<\/code>, <code>flexa_cache\/engine\/buffer<\/code>, <code>flexa_cache\/store\/dir<\/code>, <code>flexa_cache\/purged<\/code>, <code>flexa_cache\/settings\/languages<\/code>, and more<\/li>\n<li>Kill switch: <code>?flexa_cache_optimize=0<\/code> disables optimization for a single admin request<\/li>\n<li>Exclusion lists for URLs, cookies, user agents, CSS handles, and JS handles<\/li>\n<\/ul>\n\n<p><strong>Source code for compiled JavaScript and CSS<\/strong><\/p>\n\n<p>The plugin ships with a compiled admin UI (<code>assets\/dist\/<\/code>). The human-readable source code is <strong>publicly available<\/strong> at:<\/p>\n\n<p>https:\/\/github.com\/flexatech\/flexa-cache<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/flexa-cache<\/code>, or install through the WordPress <strong>Plugins<\/strong> screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Open <strong>Flexa Cache<\/strong> from the admin sidebar (located below Settings).<\/li>\n<li>Enable the <strong>Cache System<\/strong> toggle and click <strong>Save Settings<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>After a plugin update:<\/strong> deactivate and reactivate Flexa Cache once so the <code>advanced-cache.php<\/code> drop-in is refreshed. This step is only needed after an update that changes the drop-in \u2014 the release notes will say so when it applies.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20page%20cache%20work%3F\"><h3>How does the page cache work?<\/h3><\/dt>\n<dd><p>On activation, Flexa Cache installs an <code>advanced-cache.php<\/code> drop-in into <code>wp-content\/<\/code> and adds <code>define('WP_CACHE', true)<\/code> to <code>wp-config.php<\/code>. On the next uncached request, the plugin generates a static HTML file. Every subsequent request for that URL is served directly from the file \u2014 no PHP execution, no database query.<\/p><\/dd>\n<dt id=\"does%20flexa%20cache%20work%20with%20woocommerce%3F\"><h3>Does Flexa Cache work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Cart, checkout, and account pages are automatically excluded from the cache. The cache is also purged when a product's stock level or price changes.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20nginx%3F\"><h3>Does it work on nginx?<\/h3><\/dt>\n<dd><p>The static file cache works on any server (the drop-in uses PHP <code>readfile()<\/code>). The Gzip and Browser Caching toggles write Apache <code>.htaccess<\/code> rules; the plugin's class docblocks include the nginx equivalent snippets for hosts that need them.<\/p><\/dd>\n<dt id=\"how%20do%20i%20clear%20the%20cache%3F\"><h3>How do I clear the cache?<\/h3><\/dt>\n<dd><p>Click <strong>Delete Cache<\/strong> in the Flexa Cache settings page, use <code>wp flexa-cache clear<\/code> from the command line, or call <code>POST \/wp-json\/flexa-cache\/v1\/cache\/purge<\/code>. To clear a single URL, use the per-URL input in the Cache Stats panel or <code>wp flexa-cache clear --url=https:\/\/example.com\/page\/<\/code>.<\/p><\/dd>\n<dt id=\"what%20does%20%22minify%20js%22%20do%3F\"><h3>What does \"Minify JS\" do?<\/h3><\/dt>\n<dd><p>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 \u2014 the plugin ships no JS parser. If you want JS minification, enable Combine JS together with Minify JS.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20other%20caching%20plugins%3F\"><h3>Will it conflict with other caching plugins?<\/h3><\/dt>\n<dd><p>Flexa Cache checks for a foreign <code>advanced-cache.php<\/code> on 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.<\/p><\/dd>\n<dt id=\"where%20are%20the%20plugin%20settings%3F\"><h3>Where are the plugin settings?<\/h3><\/dt>\n<dd><p>In the WordPress admin sidebar, click <strong>Flexa Cache<\/strong> (located below Settings). Settings are organised into five sections: Cache, Invalidation, Performance, Exclusions, and Danger Zone.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security: cache purge, stats, and preload REST endpoints now require the <code>manage_options<\/code> capability instead of <code>upload_files<\/code>, so only administrators can trigger site-wide cache operations.<\/li>\n<li>Hardening: cached widget output is now passed through <code>wp_kses_post()<\/code> before it is echoed.<\/li>\n<li>Cleanup: removed a dead pre-WordPress-5.7 raw <code>&lt;script&gt;<\/code> fallback in the delay-JS loader; the core <code>wp_print_inline_script_tag()<\/code> helper is now always used.<\/li>\n<li>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 \u2014 preserving the original tag attributes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: page cache drop-in, 23 optimization toggles, WP-CLI, REST API, cache preloader, widget cache, mobile theme cache, i18n-ready.<\/li>\n<\/ul>","raw_excerpt":"A fast page-cache and front-end optimization plugin: static HTML served before WordPress boots, 23 performance toggles, zero configuration required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336362"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/flexatech"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336362"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336362"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336362"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336362"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336362"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}