| @@ -1,146 +1,277 @@ | ||
| 1 | -=== xSpeed === | |
| 2 | -Contributors: asif2bd, wpdevteam, seakashdiu | |
| 3 | -Tags: caching, performance, speed, optimization, minify | |
| 1 | +=== xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN === | |
| 2 | +Contributors: asif2bd, wpdevteam, seakashdiu, tushar284, hurayraiit, alimuzzamanalim | |
| 3 | +Tags: cache, performance, page speed, optimization, mcp | |
| 4 | 4 | Requires at least: 6.0 |
| 5 | -Tested up to: 7.0 | |
| 5 | +Tested up to: 7.1 | |
| 6 | 6 | Requires PHP: 7.4 |
| 7 | -Stable tag: 1.0.2 | |
| 7 | +Stable tag: 1.3.4 | |
| 8 | 8 | License: GPLv2 or later |
| 9 | 9 | License URI: https://www.gnu.org/licenses/gpl-2.0.html |
| 10 | 10 | |
| 11 | -Minimal, ultra-fast WordPress caching plugin. Page cache, HTML/CSS/JS minify, GZIP — distraction-free admin UI, no upsells. | |
| 11 | +A complete WordPress caching plugin: page cache, object cache, CDN, database cleanup and Core Web Vitals optimization, plus a built-in MCP server. | |
| 12 | 12 | |
| 13 | 13 | == Description == |
| 14 | 14 | |
| 15 | -= Speed Without the Bloat = | |
| 15 | +Your visitors decide to stay or leave in under 3 seconds. **xSpeed Cache** makes sure they stay. | |
| 16 | 16 | |
| 17 | -Most caching plugins ship with hundreds of options, dashboards full of charts, and constant upsell prompts. **xSpeed** takes the opposite approach: a single-page admin UI, a master toggle, and the optimizations that move the needle. Activate, flip the switch, done. | |
| 17 | +Most caching plugins bury you in settings, charts and upgrade popups. xSpeed Cache does the opposite. Install it, flip one switch, and your site loads faster. No bloat, no upsells nagging you, no PhD required. | |
| 18 | 18 | |
| 19 | -xSpeed delivers full-page caching, HTML/CSS/JS minification, and GZIP compression in a clean React-powered admin built for developers and site owners who want speed without the noise. | |
| 19 | +Built by the team at **WPDeveloper**, trusted by over 6 million WordPress users worldwide. | |
| 20 | 20 | |
| 21 | -= Key Features = | |
| 21 | +https://youtu.be/fYVy77GJDE4 | |
| 22 | 22 | |
| 23 | -**Page Caching** | |
| 23 | += What This WordPress Caching Plugin Does = | |
| 24 | 24 | |
| 25 | -* Full-page static HTML caching for non-logged-in visitors. | |
| 26 | -* Drop-in (`advanced-cache.php`) serves cached responses before WordPress fully boots — minimal PHP overhead per request. | |
| 27 | -* Automatic cache invalidation on post publish/update, comment activity, theme switch, and plugin activation/deactivation. | |
| 28 | -* Honors the `DONOTCACHEPAGE` constant. | |
| 29 | -* Bypasses cache for admin, AJAX, REST, cron, POST requests, and logged-in users. | |
| 30 | -* Configurable cache expiry (1–720 hours, default 24). | |
| 31 | -* URL-based exclusions (one path per line — useful for `/cart`, `/checkout`, `/my-account`). | |
| 32 | -* One-click purge from the admin bar or settings page. | |
| 25 | +xSpeed Cache is a full-site performance plugin. It caches your pages, shrinks your code, compresses your files and serves everything as fast as your server physically can, including an AI-powered audit that tells you exactly what is slowing your site down. | |
| 33 | 26 | |
| 34 | -**Code Minification** | |
| 27 | +The result: pages that load in milliseconds, not seconds. Better Google PageSpeed scores. Happier visitors. Better SEO rankings. | |
| 35 | 28 | |
| 36 | -* HTML minification — strips whitespace and comments while preserving `<pre>`, `<textarea>`, `<script>`, and `<style>` content. | |
| 37 | -* CSS minification — local enqueued stylesheets are minified once, cached on disk, and the loader URL is rewritten transparently. | |
| 38 | -* JavaScript minification — same flow as CSS; safely skips already-minified bundles and validates output to prevent breakage. | |
| 39 | -* Powered by `matthiasmullie/minify` for production-grade compression. | |
| 40 | -* `xspeed_skip_minify` filter for fine-grained control. | |
| 29 | +If you have been searching for how to speed up WordPress site performance without hiring a developer, this is the shortest path there. It is built to speed up WordPress from the first page load, not after a week of tuning. | |
| 41 | 30 | |
| 31 | += The Speed Advantage No Other Free WordPress Cache Plugin Offers = | |
| 32 | + | |
| 33 | +When xSpeed Cache caches a page, it does not just save it. It serves it directly from the server, bypassing PHP entirely. | |
| 34 | + | |
| 35 | +That means: | |
| 36 | + | |
| 37 | +* **With xSpeed static cache:** 5 to 15ms response time | |
| 38 | +* **Without it (PHP-served cache):** around 85ms response time | |
| 39 | + | |
| 40 | +That is up to **17x faster** page delivery on cache hits. No other free WordPress cache plugin does this across Apache, nginx and LiteSpeed automatically, which is what makes it worth comparing against any other best WordPress cache plugin shortlist you are working from. | |
| 41 | + | |
| 42 | += Features at a Glance = | |
| 43 | + | |
| 44 | +https://youtu.be/LlIb3XuQ-mo | |
| 45 | + | |
| 46 | +**AI Assistants and the WordPress MCP Server** | |
| 47 | + | |
| 48 | +xSpeed Cache ships a WordPress MCP server, so a Claude WordPress MCP connection, or any other MCP client, can inspect and tune your site through the same tools the dashboard uses. Every action is bounded by what you allow when you connect, which is what separates a real WordPress MCP plugin from a chatbot bolted onto a settings page. | |
| 49 | + | |
| 50 | +* MCP server appears on the Overview as a capability card, so an AI connection can be set up without hunting for a panel | |
| 51 | +* OAuth discovery, with dynamic client registration bounded by stored-client limits, redirect URI limits, name and URI length limits and per-IP rate limiting | |
| 52 | +* Read-only MCP connections can read status through every per-command tool, while write actions stay refused | |
| 53 | +* Credentials cannot be written by an AI assistant unless you explicitly grant that permission when connecting | |
| 54 | +* WP-CLI parity: `wp xspeed purge`, `wp xspeed preloader status`, `wp xspeed score run`, `wp xspeed optimize` and `wp xspeed settings list|get|update` | |
| 55 | +* The `optimize_site` tool measures the site, applies recommended settings one at a time, re-checks the page after each change and reverts anything that breaks it | |
| 56 | + | |
| 57 | +**Disable Bloat** | |
| 58 | + | |
| 59 | +Turn off WordPress features you do not use. Each one is a request your server does not have to make. | |
| 60 | + | |
| 61 | +* Disable dashicons on the frontend | |
| 62 | +* Remove oEmbed, RSS feeds, XML-RPC, jQuery Migrate and REST API authentication headers | |
| 63 | + | |
| 64 | +**AI-Powered Site Audit (Pro)** | |
| 65 | + | |
| 66 | +xSpeed Pro scans your specific site and tells you exactly which performance features will help the most, with severity ratings and concrete reasons rather than generic advice. | |
| 67 | + | |
| 68 | + | |
| 69 | +**Page Caching That Speeds Up Your WordPress Site** | |
| 70 | + | |
| 71 | +Your pages are saved as static HTML files and served instantly to visitors, before WordPress even loads. This is the fastest way to speed up WordPress page delivery, and the cache rebuilds itself automatically whenever you publish a post, switch themes or update a plugin. You never have to think about it. | |
| 72 | + | |
| 73 | +* Static-file rewrite path that bypasses PHP entirely for a 5 to 15ms TTFB | |
| 74 | +* Auto-purge on publish, update, comment and theme change | |
| 75 | +* One-click cache purge from the admin bar | |
| 76 | +* Exclude specific URLs such as `/cart`, `/checkout` and `/my-account` | |
| 77 | +* Set your own cache expiry, from 1 to 720 hours | |
| 78 | +* Separate mobile cache for phone and tablet visitors | |
| 79 | +* Per-post cache rules with custom expiry, or disable caching for individual posts | |
| 80 | + | |
| 81 | +**Code Minification for WordPress Page Speed Optimization** | |
| 82 | + | |
| 83 | +Strips all the unnecessary whitespace, comments and characters from your HTML, CSS and JavaScript without breaking anything. Smaller files are one of the most reliable WordPress page speed optimization wins available. | |
| 84 | + | |
| 85 | +* Minify HTML, CSS and JavaScript | |
| 86 | +* Combine CSS and JS files to reduce HTTP requests | |
| 87 | +* Defer or delay JavaScript so it does not block page rendering | |
| 88 | +* Async CSS loading | |
| 89 | +* Removes `?ver=` query strings from asset URLs (generated files under `wp-content/uploads` keep theirs, so a page-builder or consent-banner edit still reaches returning visitors) | |
| 90 | +* Safe-minify automatically skips already-minified files and falls back if anything looks off | |
| 91 | + | |
| 42 | 92 | **GZIP Compression** |
| 43 | 93 | |
| 44 | -* Apache and LiteSpeed: auto-configures `.htaccess` with `mod_deflate` rules. | |
| 45 | -* Nginx, IIS, or other servers: surfaces a copy-pasteable snippet for the user's server config. | |
| 46 | -* Detects whether the server already serves gzipped responses and shows an "Active on server" indicator. | |
| 94 | +Makes every file your server sends smaller, so browsers download them faster. | |
| 47 | 95 | |
| 48 | -**Built for Developers** | |
| 96 | +* Auto-configures GZIP on Apache and LiteSpeed | |
| 97 | +* Shows a ready-to-paste config snippet for nginx and IIS | |
| 98 | +* Detects if your server already has GZIP active, so there is no double-configuration | |
| 49 | 99 | |
| 50 | -* Single-page admin UI built with React 18 + TypeScript + Tailwind CSS. | |
| 51 | -* Light and dark mode with persistent preference (defaults to light). | |
| 52 | -* Collapsible sidebar that remembers state across sessions. | |
| 53 | -* Auto-save settings — no Save button. | |
| 54 | -* REST API at `/wp-json/xspeed/v1/` for programmatic control. | |
| 55 | -* Initial settings bootstrapped into the page — zero loading state on first render. | |
| 56 | -* Bundle size under 80 KB gzipped. | |
| 100 | +**Lazy Load WordPress Images, Videos and Iframes** | |
| 57 | 101 | |
| 58 | -**Cross-Server** | |
| 102 | +Lazy load WordPress media so images, videos and iframes load only when a visitor scrolls to them, rather than all at once on page load. | |
| 59 | 103 | |
| 60 | -* Works on Apache, nginx, LiteSpeed, IIS, and any PHP-capable host. | |
| 61 | -* Server-specific behavior (where applicable) is handled gracefully — no silent failures. | |
| 104 | +* Lazy load images, iframes and videos | |
| 105 | +* Automatic Cumulative Layout Shift fix so your layout does not jump | |
| 62 | 106 | |
| 63 | -= Perfect For = | |
| 107 | +**Font Optimization for WordPress Core Web Vitals** | |
| 64 | 108 | |
| 65 | -* Content-heavy blogs and news outlets. | |
| 66 | -* Small-to-mid WooCommerce stores. | |
| 67 | -* Business and portfolio sites. | |
| 68 | -* Developers who want a clean, no-noise caching plugin. | |
| 109 | +Web fonts are one of the most common causes of slow-loading pages, and fixing them is one of the easiest ways to increase WordPress page speed. Together with lazy loading and the LCP preload, this is practical core web vitals optimization rather than a score-chasing trick. | |
| 69 | 110 | |
| 70 | -= Privacy = | |
| 111 | +* Adds `font-display: swap` so text is visible immediately while fonts load | |
| 112 | +* Preloads above-the-fold font files for instant rendering | |
| 113 | +* Removes the blank-text flash caused by slow Google Fonts responses | |
| 71 | 114 | |
| 72 | -xSpeed is designed with privacy in mind. The plugin **does not collect personal user data, store IP addresses, use tracking cookies, or contact any third-party servers**. All optimizations happen locally on your server. The only HTTP request xSpeed ever makes is to your own site's home URL (see "External services" below) to confirm whether your server is serving gzipped responses. | |
| 115 | +**Browser Cache** | |
| 73 | 116 | |
| 117 | +Tells browsers to remember your static files such as images, CSS and JS, so returning visitors load your site even faster. | |
| 118 | + | |
| 119 | +* Sets proper `Cache-Control` and `Expires` headers | |
| 120 | +* Works automatically with no manual configuration needed | |
| 121 | + | |
| 122 | +**Cache Preloader** | |
| 123 | + | |
| 124 | +Warms up your cache automatically so the very first visitor after a purge still gets a fast page. | |
| 125 | + | |
| 126 | +* Sitemap-driven cache warmer | |
| 127 | +* Auto-warms cache when you publish or update content | |
| 128 | + | |
| 129 | +**Redis Object Cache for WordPress (Redis and Memcached)** | |
| 130 | + | |
| 131 | +Speed up database-heavy installs with a persistent object cache WordPress can rely on between requests. Set up Redis object cache WordPress support, or Memcached, in seconds and keep every repeated query in memory. | |
| 132 | + | |
| 133 | +* Connect Redis or Memcached in seconds | |
| 134 | +* View status and flush the object cache from the dashboard | |
| 135 | +* Works as a drop-in persistent object cache, so object cache WordPress lookups are not repeated on every page load | |
| 136 | + | |
| 137 | +**WordPress CDN Plugin Support with Cloudflare Integration** | |
| 138 | + | |
| 139 | +Serve your static files from a WordPress CDN for faster global delivery. Point it at whichever provider you already use, including a WordPress CDN free tier, so you are not locked into one network while you decide which is the best WordPress CDN for your traffic. | |
| 140 | + | |
| 141 | +* Pull-zone URL rewriting for any CDN provider | |
| 142 | +* Built-in Cloudflare WordPress CDN integration: connect your zone, auto-purge on publish and toggle development mode | |
| 143 | +* Works as a WordPress CDN plugin for any pull zone, with no separate connector to install | |
| 144 | + | |
| 145 | +**WordPress Database Cleanup and Optimization** | |
| 146 | + | |
| 147 | +A bloated database slows down every page load. This WordPress database cleanup plugin keeps yours clean and helps speed up WordPress database queries without a separate tool. | |
| 148 | + | |
| 149 | +* Optimize database tables | |
| 150 | +* Remove post revisions, spam, trash, transients and orphaned meta | |
| 151 | +* Schedule automatic cleanup so it runs on autopilot | |
| 152 | + | |
| 153 | += Built to Handle WordPress Edge Cases = | |
| 154 | + | |
| 155 | +xSpeed Cache handles the edge cases other plugins miss: | |
| 156 | + | |
| 157 | +* **Multisite ready.** Each site in the network gets its own cache and settings. | |
| 158 | +* **LiteSpeed server?** xSpeed Cache detects the LiteSpeed Cache server module and steps back to avoid conflicts. | |
| 159 | +* **WooCommerce?** Logged-in customers and checkout pages are never cached. | |
| 160 | +* **WordPress Site Health.** xSpeed Cache adds its own health check under Tools then Site Health, so you always know your cache config is working correctly. | |
| 161 | +* **Works on any server.** Apache, nginx, LiteSpeed, IIS and any standard PHP host. | |
| 162 | + | |
| 163 | += Designed for Everyone = | |
| 164 | + | |
| 165 | +**Non-technical users:** A 3-step setup wizard walks you through first-time configuration in under 2 minutes. Settings auto-save, so there is no Save button to forget. | |
| 166 | + | |
| 167 | +**Developers:** REST API at `/wp-json/xspeed/v1/`, developer filters (`xspeed_skip_minify`, `xspeed_strip_asset_version`, `xspeed_cache_skip_for_post`, `xspeed_cache_expiry_for_post`), `WP_DEBUG` awareness, and a React 18 and TypeScript admin UI. | |
| 168 | + | |
| 169 | +**Agencies:** Use the `xspeed_branding` filter to white-label the dashboard for clients. | |
| 170 | + | |
| 171 | += Private By Default = | |
| 172 | + | |
| 173 | +xSpeed Cache never collects personal data, stores IP addresses or uses tracking cookies. Every optimization runs locally on your server. By default it makes no calls to any third-party server. The only request is a quick check to your own site's home URL to confirm GZIP is active, rate-limited to once per hour. | |
| 174 | + | |
| 175 | +xSpeed Cache also includes **optional usage analytics**. You are asked in two places, both off by default: a clearly labeled consent control in the setup wizard, and the switch in xSpeed Cache → Settings → Privacy & usage data. Nothing is sent unless you opt in from one of them. When enabled, xSpeed Cache shares anonymous, non-sensitive diagnostics: your WordPress and PHP version, active theme and plugins, server type, site language, and which xSpeed Cache features you have switched on, so we know what to keep fast and compatible. No personal data and no page content are ever sent, and you can turn it off again at any time from xSpeed Cache → Settings → Privacy & usage data. See the External services section below. | |
| 176 | + | |
| 74 | 177 | = Backed By a Team You Trust = |
| 75 | 178 | |
| 76 | -xSpeed is developed by the trusted team at WPDeveloper, a leading WordPress marketplace used and loved by over 5 million users. | |
| 179 | +xSpeed Cache is developed by the trusted team at WPDeveloper, a leading WordPress marketplace used and loved by millions of users. | |
| 77 | 180 | |
| 78 | -= Loved xSpeed? = | |
| 181 | += Loved xSpeed Cache? = | |
| 79 | 182 | |
| 80 | -If xSpeed makes your site faster, please rate it on WordPress.org — it really helps. | |
| 183 | +If xSpeed Cache makes your site faster, please leave a review on WordPress.org. It really helps. | |
| 81 | 184 | |
| 82 | 185 | == Installation == |
| 83 | 186 | |
| 84 | -1. Upload the `xspeed` folder to the `/wp-content/plugins/` directory, or install through the WordPress plugins screen directly. | |
| 85 | -2. Activate the plugin through the **Plugins** screen in WordPress. | |
| 86 | -3. Navigate to **xSpeed** in your WordPress admin sidebar. | |
| 87 | -4. Toggle **Enable Cache** — that's it. xSpeed ships with sensible defaults that work out of the box. | |
| 187 | +1. Upload the `xspeed` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress Plugins screen directly. | |
| 188 | +2. Activate the plugin through the Plugins screen in WordPress. | |
| 189 | +3. Open xSpeed Cache from the admin menu. The 3-step setup wizard walks you through first-time configuration in under 2 minutes. | |
| 190 | +4. Settings auto-save, so there is no Save button to forget. | |
| 88 | 191 | |
| 89 | 192 | == Frequently Asked Questions == |
| 90 | 193 | |
| 91 | -= Which servers does xSpeed support? = | |
| 194 | += Does this WordPress cache plugin work on my server? = | |
| 92 | 195 | |
| 93 | -xSpeed works on Apache, nginx, LiteSpeed, IIS, and any standard PHP-capable host. Page caching and minification are server-agnostic. GZIP auto-configuration is supported on Apache and LiteSpeed (via `.htaccess`); on nginx and IIS, xSpeed surfaces a copy-pasteable config snippet for you to add manually. | |
| 196 | +Yes. xSpeed Cache works on Apache, nginx, LiteSpeed, IIS and any standard PHP host. GZIP auto-configures on Apache and LiteSpeed, and a ready-to-paste config snippet is provided for nginx and IIS. | |
| 94 | 197 | |
| 95 | -= Does xSpeed support WordPress Multisite? = | |
| 198 | += Will it conflict with LiteSpeed Cache? = | |
| 96 | 199 | |
| 97 | -Yes. Each site in the network maintains its own cache and settings. | |
| 200 | +No. xSpeed Cache detects the LiteSpeed Cache server module and steps back to avoid conflicts. | |
| 98 | 201 | |
| 99 | -= Will xSpeed conflict with other caching plugins? = | |
| 202 | += Is it safe for WooCommerce? = | |
| 100 | 203 | |
| 101 | -Only run one page-cache plugin at a time. Deactivate any other caching plugin before activating xSpeed. | |
| 204 | +Yes. Logged-in customers and checkout pages are never cached, and you can exclude specific URLs such as `/cart`, `/checkout` and `/my-account`. | |
| 102 | 205 | |
| 103 | -= Does caching affect my website content? = | |
| 206 | += Does it support multisite? = | |
| 104 | 207 | |
| 105 | -No. Caching stores a temporary copy of the rendered HTML to serve faster — your content stays exactly as you wrote it. | |
| 208 | +Yes. Each site in the network gets its own cache and settings. | |
| 106 | 209 | |
| 107 | -= How do I exclude a page from caching? = | |
| 210 | += Is this a WordPress MCP adapter? = | |
| 108 | 211 | |
| 109 | -Open **xSpeed → Settings**, paste the URL path (e.g., `/cart`) into the **Excluded URLs** textarea (one per line), and changes save automatically. | |
| 212 | +Not exactly. A WordPress MCP adapter usually exposes core WordPress data. The xSpeed Cache MCP server exposes the performance tools this plugin owns, such as cache purging, preloader status, score runs and settings reads and writes, so an assistant works on speed rather than on content. | |
| 110 | 213 | |
| 111 | -= How do I purge the cache? = | |
| 214 | += Can I connect Claude to it? = | |
| 112 | 215 | |
| 113 | -Click **Purge** on the Cache panel, or use the **Purge xSpeed Cache** entry in the admin bar (visible site-wide for administrators). The cache also auto-purges on content changes. | |
| 216 | +Yes. A WordPress MCP Claude connection uses OAuth discovery, and the MCP server appears on the Overview as a capability card so you can set it up without hunting for a panel. Read-only connections stay read-only. | |
| 114 | 217 | |
| 115 | -= Will minification break my site? = | |
| 218 | += Is xSpeed Cache the best free WordPress cache plugin? = | |
| 116 | 219 | |
| 117 | -xSpeed includes safety checks: it skips files already minified, refuses to ship minified output that fails a syntactic-balance check, and falls back to the original asset whenever anything looks off. If you ever spot a problem, simply toggle the relevant minify option off in **Performance**. | |
| 220 | +That is for you to judge, but here is the honest basis for comparison. The static-file rewrite path serves cached pages before PHP loads, across Apache, nginx and LiteSpeed, which most free plugins do not do. Object caching, CDN support and database cleanup are included rather than reserved for a paid tier. | |
| 118 | 221 | |
| 222 | += Can it replace my separate WordPress page speed plugin and CDN plugin? = | |
| 223 | + | |
| 224 | +In most cases yes. Page caching, minification, GZIP, lazy loading, font optimization, browser caching, object caching, WordPress CDN support and database cleanup are all in one plugin, so you are not stacking a WordPress page speed plugin on top of a cache plugin on top of a database tool. | |
| 225 | + | |
| 226 | += Will it help my Core Web Vitals? = | |
| 227 | + | |
| 228 | +It targets the parts a plugin can influence. The static cache improves server response time, the LCP preload picks the largest image on the page rather than the first, lazy loading defers offscreen media, and the automatic Cumulative Layout Shift fix stops the layout jumping. Page weight and DOM size are reported to you, since only a person can fix those. | |
| 229 | + | |
| 230 | += What is the MCP server for? = | |
| 231 | + | |
| 232 | +The MCP server lets an AI assistant connect to your site and use the same tools the dashboard uses, such as purging cache, checking preloader status, running a score and reading or updating settings. Read-only connections stay read-only, and credentials cannot be written unless you explicitly grant that permission when connecting. | |
| 233 | + | |
| 234 | += Will this break my site? = | |
| 235 | + | |
| 236 | +Very unlikely. xSpeed Cache includes safety checks for every optimization: minification falls back to the original if anything looks off, and the cache bypasses logged-in users, admin pages, AJAX and REST requests automatically. If something ever looks wrong, you can toggle any feature off individually. | |
| 237 | + | |
| 238 | += How do I clear the cache? = | |
| 239 | + | |
| 240 | +Click **Purge** in the xSpeed Cache dashboard, or use **Purge xSpeed Cache** in your admin bar. The cache also clears itself automatically whenever you publish or update content. | |
| 241 | + | |
| 242 | += Can I use xSpeed Cache alongside Cloudflare? = | |
| 243 | + | |
| 244 | +Yes. The built-in Cloudflare module connects your zone and auto-purges Cloudflare's cache whenever xSpeed Cache purges its own, so both caches stay in sync. | |
| 245 | + | |
| 119 | 246 | = Can I disable minification temporarily for debugging? = |
| 120 | 247 | |
| 121 | -Yes. Either toggle the option off in the admin UI, or as a developer enable `WP_DEBUG` (xSpeed automatically skips HTML minification when debug is on), or use the `xspeed_skip_minify` filter. | |
| 248 | +Yes. Either toggle the option off in the admin UI, enable `WP_DEBUG` (xSpeed Cache automatically skips HTML minification when debug is on), or use the `xspeed_skip_minify` filter. | |
| 122 | 249 | |
| 123 | -= Is xSpeed compatible with WooCommerce? = | |
| 250 | += Does xSpeed Cache send my data anywhere? = | |
| 124 | 251 | |
| 125 | -Yes. Pages like `/cart`, `/checkout`, and `/my-account` are common cache exclusions — add them to **Excluded URLs** and xSpeed will bypass caching for those paths. Logged-in users (including customers in their account area) are never served cached pages. | |
| 252 | +By default, no. The only request is a check to your own site's home URL to confirm GZIP is active. Usage analytics and external performance scores are covered in detail in the External services section. | |
| 126 | 253 | |
| 127 | 254 | == Screenshots == |
| 128 | 255 | |
| 129 | -1. Cache panel — master toggle, status, and live stats (cached pages, cache size, last purge). | |
| 130 | -2. Performance panel — minify HTML, CSS, JS, and GZIP toggles with server-aware hints. | |
| 131 | -3. Settings panel — cache expiry and URL exclusions with auto-save. | |
| 132 | -4. Cache panel in dark mode — same controls and stats with the dark theme applied. | |
| 256 | +1. Overview — cache status, hit ratio, cached pages, cache size, and average time saved at a glance. | |
| 257 | +2. Optimization — minify, compress, lazy-load, resource hints, fonts, and bloat control in one place. | |
| 258 | +3. Advanced Cache — cache 404s, search results, feeds, and the REST API, plus custom rules and maintenance bypass. | |
| 259 | +4. Browser Cache — Cache-Control and Expires headers with separate TTLs for static assets and HTML. | |
| 260 | +5. Health & Insights — diagnostics, hit ratio, cache coverage, and rule-based suggestions you can apply in one click. | |
| 261 | +6. MCP Server — control this site's cache from Claude and other AI agents over a token-scoped connection. | |
| 262 | +7. AI Provider — choose OpenAI, Anthropic, Google Gemini, or OpenRouter and set the model powering the AI features. | |
| 263 | +8. Migration — import settings from WP Rocket, W3 Total Cache, WP Super Cache, or LiteSpeed Cache. | |
| 133 | 264 | |
| 134 | 265 | == External services == |
| 135 | 266 | |
| 136 | -xSpeed contacts exactly one external endpoint, and only your own site: | |
| 267 | +xSpeed Cache contacts your own site (the gzip probe below); when usage analytics is enabled, an analytics service; only if you choose to submit the optional deactivation survey, that same service; and — only when you run a speed test yourself — one external performance-score provider. Analytics consent is asked in two places, both off by default — a clearly-labeled control in the setup wizard, and the switch in xSpeed Cache → Settings → Privacy & usage data — and nothing is sent unless you opt in from one of them; turning the switch off stops all collection and clears the scheduled send. The deactivation survey is separate and never sends anything unless you explicitly click Submit. External scores are off by default, turn on the first time you press Test, and never run on their own. | |
| 137 | 268 | |
| 138 | 269 | = Self-hosted gzip probe = |
| 139 | 270 | |
| 140 | 271 | * **What it does:** Issues a single `GET` request to your site's home URL (`home_url('/')`) with an `Accept-Encoding: gzip` header to detect whether your web server is already serving gzipped responses. The response body is discarded; only the `Content-Encoding` header is read. |
| 141 | 272 | * **When it runs:** On demand when the admin dashboard loads server status, throttled to once per hour via a transient (`xspeed_gzip_active`). |
| 142 | -* **Where the request goes:** Your own site (`home_url()`). xSpeed does not contact any third-party server, analytics endpoint, license server, or telemetry collector. | |
| 273 | +* **Where the request goes:** Your own site (`home_url()`). This request goes only to your own server. | |
| 143 | 274 | * **What is sent:** No personal data, no site identifiers, no payload — just a standard HTTP `GET` from your server back to your server. |
| 144 | 275 | |
| 145 | 276 | == Third-party libraries == |
| 146 | 277 | |
| @@ -161,9 +292,9 @@ | ||
| 161 | 292 | * License: MIT |
| 162 | 293 | |
| 163 | 294 | = React / React DOM / Scheduler = |
| 164 | 295 | |
| 165 | -Used for the xSpeed admin interface bundle. | |
| 296 | +Used for the xSpeed Cache admin interface bundle. | |
| 166 | 297 | |
| 167 | 298 | * Source: https://github.com/facebook/react |
| 168 | 299 | * License: MIT |
| 169 | 300 | |
| @@ -175,79 +306,63 @@ | ||
| 175 | 306 | * License: ISC |
| 176 | 307 | |
| 177 | 308 | == Changelog == |
| 178 | 309 | |
| 179 | -= [1.0.2] – 2026-06-02 = | |
| 310 | += [1.3.4] – 2026-09-20 = | |
| 180 | 311 | |
| 181 | -**Static-rewrite cache, Site Health & Fonts.** | |
| 312 | +**Consent-manager scripts marked late are now always left alone, below-fold sections skip rendering work until they are needed, and xSpeed's MCP server shares a site cleanly with other MCP plugins.** | |
| 182 | 313 | |
| 183 | -Static-rewrite cache + Site Health: | |
| 184 | -- New: Static-file rewrite path — cached HTML is served directly by Apache / nginx / LiteSpeed, bypassing PHP entirely on cache hits (5-15ms TTFB vs ~85ms via the PHP drop-in). | |
| 185 | -- New: .htaccess static-cache block — installed automatically on cache enable, removed cleanly on disable. Block precedes WordPress's own rules so static files match first. | |
| 186 | -- New: nginx config snippet — copy-pasteable server { } block surfaced in the dashboard when nginx is detected (PHP can't write nginx config). Avoids the "if is evil" pitfall via a named-location fallback. | |
| 187 | -- New: LiteSpeed LSCache coexistence — xSpeed detects LSCache's server-level module and steps back instead of double-caching. | |
| 188 | -- New: Active rewrite probe — Health module pings the cache directory and confirms the rewrite is actually serving static bytes (not just present in .htaccess). | |
| 189 | -- New: WordPress Site Health integration — Tools → Site Health now lists an xSpeed check covering static-rewrite status + nginx config requirements. | |
| 190 | -- New: Persistent banner — Cache panel warns the admin when caching is on but the static-rewrite block isn't engaged (slow fallback path). | |
| 191 | -- New: Copy-to-clipboard button on every config-snippet panel (nginx, GZIP, object-cache). | |
| 314 | +Optimization: | |
| 315 | +- New: Below-fold sections are rendered lazily with content-visibility: auto, so the browser skips their layout and paint work until they scroll into view. | |
| 316 | +- New: Block-editor stylesheets are stripped from anonymous frontend pages that do not use any blocks. | |
| 317 | +- Fixed: Scripts that another plugin marks data-no-optimize or data-no-minify late — as consent managers such as Borlabs Cookie do — are restored to their original URL and left alone by minify, defer and delay, however late the marker is stamped. | |
| 192 | 318 | |
| 193 | -Fonts: | |
| 194 | -- New: Fonts module — adds `font-display: swap` to enqueued web fonts so visible text doesn't wait on a slow Google Fonts response, and exposes a preload list for above-the-fold font files. | |
| 195 | -- New: FontsModule tests covering the swap rewrite + preload `<link>` emission. | |
| 319 | +AI / MCP: | |
| 320 | +- Improved: The AI & agents screen now leads with the MCP server and says what each of its tools does, with descriptions shown in full. | |
| 321 | +- Improved: An assistant already connected over OAuth may ask for approval once more after updating — nothing needs re-entering, and read-only connections stay read-only. | |
| 322 | +- Fixed: An AI assistant can now connect to xSpeed and to another MCP plugin on the same site. xSpeed's OAuth details moved to an address of their own under /xspeed/mcp, and the site-wide address is handed over as soon as another plugin asks for it — where nothing else wants it, xSpeed keeps answering there. | |
| 196 | 323 | |
| 197 | -Improvements & fixes: | |
| 198 | -- Improved: Server-type detection is cached so CLI / cron contexts see the same server type as web requests. | |
| 199 | -- Improved: Drop-in (advanced-cache.php) and WP_CACHE constant are preserved across plugin upgrades; auto-heal hook tightened to admin_init to avoid REST/cron noise. | |
| 200 | -- Improved: Plugin Check pass — i18n textdomains, WP_Filesystem coverage, SQL preparation, sanitization, and plugin/readme headers all cleaned up for WordPress.org review. | |
| 201 | -- Fixed: nginx snippet rewritten to avoid the try_files trap that broke pretty permalinks. | |
| 202 | -- Fixed: Rewrite condition normalized for trailing-slash + non-trailing-slash URLs. | |
| 203 | -- Fixed: WP-Rocket-style canonical pattern — server-level conditional rewrite. | |
| 204 | -- Fixed: Minify tag-rewrite filters bail in non-frontend contexts (REST / admin / cron). | |
| 205 | -- Fixed: wp.org release zip now ships `vendor/` — resolves the 1.0.1 activation fatal. | |
| 206 | -- Improved: Release pipeline rebuilt — `.distignore`-driven dist build, CI verify step, version-named artifact on every run. | |
| 207 | -- Improved: Plugin version read from the PHP header — single source of truth. | |
| 324 | +Dashboard & Admin UX: | |
| 325 | +- Fixed: Buttons can carry a border and always show keyboard focus, and the Cloudflare Dev-mode controls use proper button styling. | |
| 208 | 326 | |
| 209 | -= [1.0.1] – 2026-06-01 = | |
| 327 | += [1.3.3] – 2026-09-16 = | |
| 210 | 328 | |
| 211 | -**Foundation release — full feature set + Pro hooks.** | |
| 329 | +**Consent gets a dashboard home, the cache engine learns to leave non-HTML alone, and uncacheable pages now tell the CDN so.** | |
| 212 | 330 | |
| 213 | -Module architecture + LiteSpeed parity floor: | |
| 214 | -- New: Module architecture — every feature now ships as a self-contained Module (Cache, Health, Preloader, Heartbeat, Minify, GZIP, Lazy Load, Disable Bloat, Database, CDN, Cloudflare, Object Cache, Browser Cache). | |
| 215 | -- New: Health module — 24-hour hit/miss counter + activity log. | |
| 216 | -- New: Preloader module — sitemap-driven cache warmer with content-publish auto-warm. | |
| 217 | -- New: Cache exclusion intelligence — glob URL patterns, cookie patterns, User-Agent bypass, ignored query parameters. | |
| 218 | -- New: Per-device cache (mobile-separate). | |
| 219 | -- New: Per-post cache rules — don't-cache + custom expiry meta box. | |
| 220 | -- New: Minification — CSS / JS / HTML minify, combine, defer JS, delay JS, async CSS, remove ?ver= query strings. | |
| 221 | -- New: Lazy Load module — images / iframes / videos + auto CLS-fix. | |
| 222 | -- New: Disable Bloat module — 6 ergonomic toggles (dashicons, oEmbed, RSS, XML-RPC, jQuery Migrate, REST auth). | |
| 223 | -- New: Database module — optimize tables, scheduled cleanup, autoload analysis. | |
| 224 | -- New: CDN module — pull-zone URL rewriting. | |
| 225 | -- New: Cloudflare module — zone connect, auto-purge, dev-mode toggle. | |
| 226 | -- New: Object Cache module — Redis / Memcached config + status + flush. | |
| 227 | -- New: Browser Cache module — Cache-Control + Expires headers. | |
| 228 | -- New: Settings search across the entire dashboard with keyword highlighting. | |
| 229 | -- New: 3-step setup wizard on first activation with preset chooser and benchmark. | |
| 230 | -- New: Sidebar grouping under domain headers (Cache / Performance / Network / Insights / Tools). | |
| 231 | -- New: Sidebar tooltips + search shortcut in the collapsed rail. | |
| 232 | -- New: xspeed_branding filter — agencies can rebrand the dashboard. | |
| 233 | -- New: xspeed_cache_skip_for_post + xspeed_cache_expiry_for_post filters. | |
| 331 | +Privacy & Analytics: | |
| 332 | +- New: A "Privacy & usage data" panel to view and withdraw usage-analytics consent any time, with a matching wp xspeed privacy command. | |
| 333 | +- Improved: The setup wizard's analytics consent now defaults to off and is only ever an explicit opt-in. | |
| 234 | 334 | |
| 235 | -Pro-essentials (everything xSpeed Pro depends on, bundled here so any Pro release works against this single Free version): | |
| 236 | -- New: xspeed_module_descriptor filter — Pro hooks this to swap its panels to LicenseLockedPanel when license is invalid. | |
| 237 | -- New: AI Privacy module — GDPR off-switch + xspeed_ai_can_collect_data filter that Pro AI features must consult before recording visitor data. | |
| 238 | -- New: Pro upsell teasers — in-context inline cards on Cache, Minify, Lazy Load, Browser Cache and Disable Bloat panels. | |
| 239 | -- New: Locked Pro module rows in the sidebar — shows what Pro offers with a clear upgrade prompt. | |
| 240 | -- New: Pro Audit on the Cache panel — site-specific scan listing the top Pro features that would help THIS site, with severity chips and concrete reasons (not generic marketing copy). | |
| 241 | -- New: Sidebar slot for the license module (appears when xSpeed Pro is installed). | |
| 242 | -- New: Global 36px form-control height baseline across the dashboard. | |
| 243 | -- New: filemtime() cache busting on admin asset URLs. | |
| 335 | +Caching: | |
| 336 | +- Fixed: WordPress's virtual robots.txt (and favicon) is no longer cached or minified, so every directive and newline reaches crawlers intact. | |
| 337 | +- Improved: /robots.txt joined the default cache exclusions, and the sitemap pattern now matches sitemaps.xml too — existing installs keep their working exclusion through the rename. | |
| 244 | 338 | |
| 245 | -Improvements & fixes: | |
| 246 | -- Improved: React panel registry — modules auto-render in the dashboard. | |
| 247 | -- Improved: Portal-based save indicator — zero layout shift. | |
| 248 | -- Improved: Distribution zip prunes dev dependencies (composer install --no-dev). | |
| 249 | -- Fixed: 5 duplicate module icons + regression test. | |
| 339 | +Cloudflare & CDN: | |
| 340 | +- New: A page xSpeed refuses to cache now sends no-store edge headers, so a CDN never freezes a half-optimized or excluded page. | |
| 341 | +- Fixed: The deferred Cloudflare purge batch is bounded, cleared on deactivation, and says so when a purge is refused. | |
| 250 | 342 | |
| 343 | +Optimization: | |
| 344 | +- Fixed: Scripts marked data-no-optimize or data-no-minify are left completely alone by minify, defer and delay — consent-manager configurations always ship current. | |
| 345 | +- Fixed: xSpeed's own scripts are never deferred or delayed by its own optimizer. | |
| 346 | +- Fixed: The Conservative preset now switches LCP preload and preconnect off, matching its "page cache + GZIP only" promise. | |
| 251 | 347 | |
| 252 | -= [1.0.0] – 2026-05-27 = | |
| 253 | -- Initial release. | |
| 348 | +Dashboard & Admin UX: | |
| 349 | +- Improved: Preload now reports what actually happened — how many pages are warming, and the server's reason when a crawl cannot start. | |
| 350 | + | |
| 351 | +Reliability: | |
| 352 | +- Improved: Uninstall now removes all usage-tracking state, the scheduled send, and every leftover option row. | |
| 353 | + | |
| 354 | += [1.3.2] – 2026-09-15 = | |
| 355 | + | |
| 356 | +**Purging is now a contract other caches can join: clearing xSpeed's page cache also invalidates LiteSpeed Cache and the host's nginx FastCGI cache, and every purge is scoped to exactly the site and pages it was asked for — including on multisite.** | |
| 357 | + | |
| 358 | +Caching: | |
| 359 | +- New: A purge-event contract lets other caching layers invalidate together with xSpeed, so a purge clears every cache that matters in one action. | |
| 360 | +- New: Purge All is forwarded to LiteSpeed Cache and the host's nginx FastCGI cache when they are present. | |
| 361 | +- Fixed: One post change triggers exactly one invalidation, deleting a media file purges again, and a purge still finds its post when the hook hands over none. | |
| 362 | +- Fixed: Purges are scoped per site on multisite — a purge no longer sends another site's URLs to this site's server cache, a default port is not treated as a different site, and full purges stay on the current site. | |
| 363 | +- Fixed: A purge listener that throws no longer aborts the purge, a query string of "0" is still treated as a query, and a partial purge reports itself as partial instead of claiming success. | |
| 364 | + | |
| 365 | +Optimization: | |
| 366 | +- Fixed: Delaying JavaScript no longer breaks inline scripts bound to a delayed handle, and replayed external scripts keep their original load order. | |
| 367 | + | |
| 368 | +Older releases are listed in changelog.txt, included with the plugin, and at [xspeedcache.com/changelog](https://xspeedcache.com/changelog/). | |