PluginProbe
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN / 1.1.0
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN v1.1.0
1.3.3 1.3.2 1.3.1 1.3.0 1.2.4 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 All 29 releases
xspeed / readme.txt

readme.txt in xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN 1.1.0, at readme.txt

554 lines 31.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 === xSpeed Cache – Minify, CDN, Preload & Performance Optimizer ===
2 Contributors: asif2bd, wpdevteam, seakashdiu
3 Tags: caching, performance, speed, optimization, minify
4 Requires at least: 6.0
5 Tested up to: 7.0
6 Requires PHP: 7.4
7 Stable tag: 1.1.0
8 License: GPLv2 or later
9 License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
11 Ultra-fast WordPress caching & performance plugin. Page cache, minify, GZIP, lazy load, fonts, object cache, CDN — one switch, no bloat, no upsells.
12
13 == Description ==
14
15 Your visitors decide to stay or leave in under 3 seconds. **xSpeed Cache** makes sure they stay.
16
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
19 Built by the team at **WPDeveloper** — trusted by over 7 million WordPress users worldwide.
20
21 = What Does xSpeed Cache Do? =
22
23 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's slowing your site down.
24
25 The result: pages that load in milliseconds, not seconds. Better Google PageSpeed scores. Happier visitors. Better SEO rankings.
26
27 = The Speed Advantage No Other Free Plugin Offers =
28
29 When xSpeed Cache caches a page, it doesn't just save it — it serves it directly from the server, bypassing PHP entirely.
30
31 That means:
32
33 * **With xSpeed static cache:** 5–15ms response time
34 * **Without it (PHP-served cache):** ~85ms response time
35
36 That's up to **17× faster** page delivery on cache hits. No other free caching plugin does this across Apache, nginx, and LiteSpeed automatically.
37
38 = Features at a Glance =
39
40 **Page Caching**
41
42 Your pages are saved as static HTML files and served instantly to visitors — before WordPress even loads. The cache rebuilds itself automatically whenever you publish a post, switch themes, or update a plugin. You never have to think about it.
43
44 * Static-file rewrite path (bypasses PHP entirely — 5–15ms TTFB)
45 * Auto-purge on publish, update, comment, theme change
46 * One-click cache purge from the admin bar
47 * Exclude specific URLs (e.g. `/cart`, `/checkout`, `/my-account`)
48 * Set your own cache expiry (1–720 hours)
49 * Separate mobile cache for phone and tablet visitors
50 * Per-post cache rules — custom expiry or disable caching for individual posts
51
52 **Code Minification**
53
54 Strips all the unnecessary whitespace, comments, and characters from your HTML, CSS, and JavaScript without breaking anything.
55
56 * Minify HTML, CSS, and JavaScript
57 * Combine CSS and JS files to reduce HTTP requests
58 * Defer or delay JavaScript so it doesn't block page rendering
59 * Async CSS loading
60 * Removes `?ver=` query strings from asset URLs
61 * Safe-minify: automatically skips already-minified files and falls back if anything looks off
62
63 **GZIP Compression**
64
65 Makes every file your server sends smaller — so browsers download them faster.
66
67 * Auto-configures GZIP on Apache and LiteSpeed
68 * Shows a ready-to-paste config snippet for nginx and IIS
69 * Detects if your server already has GZIP active — no double-configuration
70
71 **Lazy Load**
72
73 Images, videos, and iframes load only when a visitor scrolls to them — not all at once on page load.
74
75 * Lazy load images, iframes, and videos
76 * Automatic CLS (Cumulative Layout Shift) fix so your layout doesn't jump
77
78 **Fonts Optimization**
79
80 Web fonts are one of the most common causes of slow-loading pages.
81
82 * Adds `font-display: swap` so text is visible immediately while fonts load
83 * Preloads above-the-fold font files for instant rendering
84 * Removes the blank-text flash caused by slow Google Fonts responses
85
86 **Browser Cache**
87
88 Tells browsers to remember your static files (images, CSS, JS) so returning visitors load your site even faster.
89
90 * Sets proper `Cache-Control` and `Expires` headers
91 * Works automatically — no manual configuration needed
92
93 **Cache Preloader**
94
95 Warms up your cache automatically so the very first visitor after a purge still gets a fast page.
96
97 * Sitemap-driven cache warmer
98 * Auto-warms cache when you publish or update content
99
100 **Object Cache (Redis / Memcached)**
101
102 Speed up database-heavy WordPress installs with server-side object caching.
103
104 * Connect Redis or Memcached in seconds
105 * View status and flush cache from the dashboard
106
107 **CDN Support**
108
109 Serve your static files from a CDN for faster global delivery.
110
111 * Pull-zone URL rewriting for any CDN provider
112 * Built-in Cloudflare integration: connect your zone, auto-purge on publish, toggle dev mode
113
114 **Database Optimization**
115
116 A bloated database slows down every page load. xSpeed Cache keeps yours clean.
117
118 * Optimize database tables
119 * Remove post revisions, spam, trash, transients, and orphaned meta
120 * Schedule automatic cleanup so it runs on autopilot
121
122 **Disable Bloat**
123
124 Turn off WordPress features you don't use — each one is a request your server doesn't have to make.
125
126 * Disable dashicons on the frontend
127 * Remove oEmbed, RSS feeds, XML-RPC, jQuery Migrate, REST API authentication headers
128
129 **AI-Powered Site Audit (Pro)**
130
131 xSpeed Pro scans your specific site and tells you exactly which performance features will help the most — with severity ratings and concrete reasons, not generic advice.
132
133 = Smart Enough to Stay Out of Trouble =
134
135 xSpeed Cache handles the edge cases other plugins miss:
136
137 * **Multisite ready** — each site in the network gets its own cache and settings.
138 * **LiteSpeed server?** — xSpeed Cache detects LiteSpeed Cache's server module and steps back to avoid conflicts.
139 * **WooCommerce?** — logged-in customers and checkout pages are never cached.
140 * **WordPress Site Health** — xSpeed Cache adds its own health check under Tools → Site Health so you always know your cache config is working correctly.
141 * **Works on any server** — Apache, nginx, LiteSpeed, IIS, and any standard PHP host.
142
143 = Designed for Everyone =
144
145 **Non-technical users:** A 3-step setup wizard walks you through first-time configuration in under 2 minutes. Settings auto-save — there's no Save button to forget.
146
147 **Developers:** REST API at `/wp-json/xspeed/v1/`, developer filters (`xspeed_skip_minify`, `xspeed_cache_skip_for_post`, `xspeed_cache_expiry_for_post`), `WP_DEBUG` awareness, and a React 18 + TypeScript admin UI under 80 KB gzipped.
148
149 **Agencies:** Use the `xspeed_branding` filter to white-label the dashboard for clients.
150
151 = Private By Default =
152
153 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.
154
155 xSpeed Cache also includes **optional usage analytics**. The setup wizard shows a clearly-labeled consent control for it (enabled by default, untick to opt out), and nothing is sent until you confirm your choices in the wizard. When enabled, xSpeed Cache shares anonymous, non-sensitive diagnostics — your WordPress & PHP version, active theme & 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 your dashboard. (See "External services" below.)
156
157 = Backed By a Team You Trust =
158
159 xSpeed Cache is developed by the trusted team at WPDeveloper, a leading WordPress marketplace used and loved by millions of users.
160
161 = Loved xSpeed Cache? =
162
163 If xSpeed Cache makes your site faster, please leave a review on WordPress.org — it really helps!
164
165 == Installation ==
166
167 1. Go to **Plugins → Add New** in your WordPress admin and search for **xSpeed Cache**.
168 2. Click **Install Now**, then **Activate**.
169 3. Navigate to **xSpeed Cache** in your sidebar.
170 4. The setup wizard will guide you through the rest — it takes about 2 minutes.
171
172 That's it. Your site is now faster.
173
174 == Frequently Asked Questions ==
175
176 = Will this break my site? =
177
178 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.
179
180 = Does it work with WooCommerce? =
181
182 Yes. Add `/cart`, `/checkout`, and `/my-account` to the Excluded URLs list and xSpeed Cache will skip caching those pages. Logged-in customers are never served cached pages regardless.
183
184 = Does it work with my server? =
185
186 xSpeed Cache works on Apache, nginx, LiteSpeed, IIS, and any standard PHP host. Static-cache rewriting and GZIP auto-configuration work out of the box on Apache and LiteSpeed. For nginx and IIS, xSpeed Cache shows you a ready-to-paste config snippet.
187
188 = Does it support WordPress Multisite? =
189
190 Yes. Each site in the network has its own independent cache and settings.
191
192 = Will it conflict with LiteSpeed Cache? =
193
194 No. xSpeed Cache detects LiteSpeed's server-level caching module and steps back automatically to avoid double-caching. Otherwise, only run one page-cache plugin at a time.
195
196 = How do I exclude a page from being cached? =
197
198 Go to **xSpeed Cache → Settings**, paste the URL path (e.g. `/cart`) into the Excluded URLs field — one path per line. Changes save automatically.
199
200 = How do I clear the cache? =
201
202 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.
203
204 = Can I use xSpeed Cache alongside Cloudflare? =
205
206 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.
207
208 = Can I disable minification temporarily for debugging? =
209
210 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.
211
212 == Screenshots ==
213
214 1. Cache panel — master toggle, status, and live stats (cached pages, cache size, last purge).
215 2. Minification — minify and combine HTML, CSS, and JavaScript with defer/delay options.
216 3. Lazy Load — defer images, iframes, and videos until they scroll into view, with CLS-fix.
217 4. Cache Preloader — sitemap-driven cache warmer that keeps the first visitor fast.
218 5. Object Cache — connect Redis or Memcached, view status, and flush from the dashboard.
219 6. CDN — pull-zone URL rewriting for faster global static-asset delivery.
220 7. Cloudflare — connect your zone, auto-purge on publish, and toggle development mode.
221 8. Custom Cache Rules — per-URL and per-post caching rules with custom expiry.
222 9. Disable Bloat — switch off unused WordPress features (dashicons, oEmbed, RSS, XML-RPC, and more).
223 10. Heartbeat Control — throttle the WordPress Heartbeat API to reduce admin-ajax load.
224 11. AI-Powered Site Audit (Pro) — site-specific recommendations with severity ratings and concrete reasons.
225
226 == External services ==
227
228 xSpeed Cache contacts your own site (the gzip probe below) and, when usage analytics is enabled, one analytics service. The setup wizard shows a clearly-labeled consent control for analytics (enabled by default, untick to opt out), and nothing is sent until you confirm your choices there.
229
230 = Self-hosted gzip probe =
231
232 * **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.
233 * **When it runs:** On demand when the admin dashboard loads server status, throttled to once per hour via a transient (`xspeed_gzip_active`).
234 * **Where the request goes:** Your own site (`home_url()`). This request goes only to your own server.
235 * **What is sent:** No personal data, no site identifiers, no payload — just a standard HTTP `GET` from your server back to your server.
236
237 = Usage analytics (opt-in, off by default) =
238
239 * **What it does:** When usage analytics is enabled, xSpeed Cache periodically sends anonymous, non-sensitive diagnostics to help us keep the plugin fast and compatible with real-world WordPress environments. Data sent: site URL, site name, WordPress version, PHP version, site language & charset, multisite flag, server software, your list of active & inactive plugins, active theme & version, text direction, and your xSpeed Cache feature usage (which optimization features you have switched on and their numeric settings — e.g. cache lifetime, minification, lazy-load). This is feature-usage data only: it tells us which features are actually used so we can focus on what matters. **We never send any values you enter** — no API keys, tokens, passwords, license keys, email addresses, URLs, brand names, or logos — and **no page content, no visitor data, and no personal data** (your email is never collected in the free plugin).
240 * **When it runs:** It runs at most once per day via WP-Cron, only after you confirm your choices in the setup wizard. Untick the consent control (or disable it later from the dashboard) and nothing is ever sent.
241 * **Where the request goes:** WP Insights, WPDeveloper's usage-analytics service — `https://send.wpinsight.com/process-plugin-data`. ([Privacy Policy](https://wpdeveloper.com/privacy-policy))
242 * **How to turn it off:** Untick the consent control in the wizard, or disable it later from the xSpeed Cache dashboard. Opting out stops all data collection and clears the scheduled task.
243
244 == Third-party libraries ==
245
246 This plugin bundles the following GPL-compatible third-party libraries:
247
248 = matthiasmullie/minify =
249
250 Used for CSS and JavaScript minification.
251
252 * Source: https://github.com/matthiasmullie/minify
253 * License: MIT
254
255 = matthiasmullie/path-converter =
256
257 Dependency of `matthiasmullie/minify`.
258
259 * Source: https://github.com/matthiasmullie/path-converter
260 * License: MIT
261
262 = React / React DOM / Scheduler =
263
264 Used for the xSpeed Cache admin interface bundle.
265
266 * Source: https://github.com/facebook/react
267 * License: MIT
268
269 = lucide-react =
270
271 Used for admin interface icons.
272
273 * Source: https://github.com/lucide-icons/lucide
274 * License: ISC
275
276 == Changelog ==
277
278 = [1.1.0] – 2026-07-22 =
279
280 **New xSpeed Hub — connect one AI assistant to manage caching across all your sites.**
281
282 xSpeed Hub:
283 - New: "xSpeed Hub" tab in the MCP Server panel — connect this site to your xspeedcache.com account so a single AI connection can manage caching across all your WordPress sites.
284 - New: One-click "Connect via xspeedcache.com" — sign in and approve, no token to copy.
285 - Improved: The connect flow carries your admin email so account setup is one click for new users.
286
287 Dashboard & Admin UX:
288 - Improved: Benchmark and AI audit now sit above the cache settings for a clearer, action-first layout.
289 - Improved: The dashboard menu now reads "xSpeed Cache".
290
291 = [1.0.9] – 2026-07-16 =
292
293 **Redesigned dashboard navigation, improved settings experience, and caching reliability fixes.**
294
295 Dashboard & Admin UX:
296 - New: Redesigned settings navigation with dedicated pages for Optimization, Cache, Compression, Cloudflare, Health, and AI & Agents.
297 - New: Branded loading skeleton for a smoother dashboard loading experience.
298 - Improved: Clearer and searchable settings navigation.
299 - Improved: Enhanced search with tab and section-level results.
300 - Improved: Cleaner Free dashboard with streamlined Pro sections.
301
302 Optimization:
303 - Fixed: Improved CSS combination compatibility with page builders.
304 - Fixed: Resolved frontend rendering issues on block themes.
305
306 Caching:
307 - Fixed: Admin bar cache purge issue.
308 - Fixed: Hit counter reset reliability.
309
310 = [1.0.8] – 2026-07-14 =
311
312 **MCP support for AI assistants, LCP optimization, and admin experience improvements.**
313
314 AI / MCP:
315 - New: MCP server support for Claude and other MCP-compatible AI assistants.
316 - New: Secure OAuth 2.1 connection for remote AI assistants.
317 - New: MCP dashboard with available tools and permissions.
318
319 Performance:
320 - New: Resource Hints with LCP image preload and font preconnect.
321 - Fixed: Improved LCP image loading by preventing lazy loading on the hero image.
322
323 Dashboard & Admin UX:
324 - New: Settings shortcut from the WordPress Plugins page.
325 - Improved: Updated admin menu organization and dashboard navigation.
326 - Improved: Better Pro license messaging and settings search experience.
327 - Fixed: Checkbox rendering in both light and dark mode.
328
329 Reliability:
330 - Fixed: Improved cache permission handling on non-NGINX servers.
331
332 = [1.0.7] – 2026-07-05 =
333
334 **Improved reliability, granular cache management, Redis compatibility, and asset optimization fixes.**
335
336 Caching:
337 - New: Granular cache purge options for Page/Static, CSS/JS, Object Cache, and REST Cache.
338 - Fixed: Improved compatibility with previously installed caching plugins.
339 - Fixed: Purge All now properly clears optimized assets, object cache, and triggers CDN/edge purges.
340
341 Object Cache:
342 - Fixed: Redis 6+ ACL compatibility for managed hosting environments.
343 - Improved: Object cache write verification for better reliability.
344 - Improved: Site-specific object cache flushing for shared Redis environments.
345 - Improved: Persistent object cache group flushing.
346
347 Asset Optimization:
348 - Fixed: Combined CSS now preserves inline styles and stylesheet order.
349 - Fixed: Combined CSS files are regenerated correctly after cache purge.
350 - Fixed: Relative asset paths are preserved in optimized CSS.
351
352 Dashboard & Admin UX:
353 - Fixed: Dashboard layout issue with large WordPress admin menus.
354 - Fixed: Admin menu and toolbar overlay issues.
355 - Fixed: Pro sidebar item ordering.
356
357 Migration:
358 - Fixed: Mobile cache migration compatibility for NGINX static cache.
359
360 = [1.0.6] – 2026-06-25 =
361
362 **New caching capabilities, smarter settings, Pro cache warming, and major reliability improvements.**
363
364 Caching:
365 - New: REST API response caching with per-route TTL.
366 - New: Feed, search results, and 404 page caching.
367 - New: `xspeed_should_cache` filter for advanced cache control.
368 - New: Maintenance-aware cache serving to prevent stale maintenance pages.
369 - Improved: Feed handling with conditional GET (304 Not Modified) support.
370 - Fixed: Cache metadata handling for feeds, 404 pages, and content types.
371 - Fixed: Automatic cache purging for user and taxonomy changes.
372 - Fixed: Versioned cache drop-in to ensure updates are applied correctly.
373
374 Settings:
375 - New: Conditional settings with dependency support (AND/OR logic).
376 - Fixed: Preserved custom option keys during schema-driven saves.
377 - Fixed: Image URL validation for media fields.
378
379 White Label:
380 - Fixed: Footer credit and Help & Support link controls.
381 - Fixed: Fallback to the default logo when a custom brand logo is unavailable.
382
383 Migration:
384 - New: One-Click Profiles and Save & Share with an improved import experience.
385 - Fixed: Import now counts and migrates only enabled source settings.
386
387 Reliability:
388 - Fixed: Improved REST API error handling to prevent broken JSON responses.
389
390 Admin UX:
391 - New: Opt-in usage analytics (WP Insights).
392 - Improved: Sidebar navigation, conditional Pro settings, and submenu behavior.
393 - Improved: Pro upgrade links now point directly to the pricing page.
394
395 Pro (requires xSpeed Pro):
396 - New: Predictive Cache Warming and Scheduled Cache Prewarming.
397 - New: Brotli compression support with GZIP fallback.
398
399 = [1.0.5] – 2026-06-18 =
400
401 **Migration into Free, LiteSpeed cache ownership & accurate hit counting.**
402
403 Migration:
404 - New: One-click migration from other caching plugins (LiteSpeed Cache, WP Rocket, W3 Total Cache, etc.) is now part of the Free plugin — import your existing exclusions and settings on activation instead of starting from scratch.
405
406 LiteSpeed:
407 - Fixed: On LiteSpeed/OpenLiteSpeed, xSpeed Cache now tells LSCache to stand down (X-LiteSpeed-Cache-Control: no-cache) and owns the cache itself, so the X-XSpeed-Cache header is emitted, hits are counted, and the dashboard no longer falsely reports a PHP fallback.
408 - Fixed: LiteSpeed cache hits route through the drop-in (which both tags and counts them) since OpenLiteSpeed's .htaccess can't tag or log a static hit — giving consistent ~1ms hits and an accurate hit ratio.
409
410 Cache hit counting & stats:
411 - Fixed: Hit/miss counters moved off transients onto a persistent option, so they no longer evaporate when a non-persistent object cache (e.g. an unreachable Redis) is active — the hit ratio was getting stuck at a fake 0%/100%.
412 - Fixed: Cache MISSes are now recorded inline so the hit-ratio stat reflects reality instead of being pinned at 100%.
413 - Fixed: PHP-served cache HITs are counted correctly and the drop-in device-bucket desync is resolved.
414 - Fixed: Homepage now caches via the static rewrite (the rule used a pattern that required a non-empty path, so `/` fell through to PHP while inner pages were rewritten).
415
416 Nginx:
417 - Fixed: A nginx access_log directive in the generated snippet could take down the whole server when its log file was missing; the path is now resolved lazily so a deleted hits.log can't fail `nginx -t`.
418 - Fixed: The dashboard's nginx server-block snippet now updates optimistically when you toggle cache, instead of showing the pre-toggle state, and the wizard's Done step shows the post-apply block.
419
420 Admin UX:
421 - New: Collapsible sidebar groups for cleaner navigation.
422 - Improved: Renamed the "Cache" module label to "Page Cache" for clarity.
423 - Improved: Sidebar group icons and chevrons brighten correctly on hover (white in dark mode).
424
425 Module fixes:
426 - Fixed: Lazy Load — four correctness bugs resolved.
427 - Fixed: Heartbeat — editor-context detection, CLI set support, and honest frontend copy.
428 - Fixed: Database cleaner — expired-transient cleanup gaps and a count mismatch.
429 - Fixed: Google Fonts — no longer double-appends `display=swap` on entity-encoded hrefs.
430 - Fixed: Settings now strictly validate boolean fields instead of casting, preventing bad values from silently becoming `true`/`false`.
431 - Fixed: Object Cache — core option groups marked non-persistent so the drop-in can always be deactivated; degraded backends detected honestly.
432 - Improved: Static-rewrite SSL probe verifies the certificate and no longer blocks admin page loads.
433
434 = [1.0.4] – 2026-06-14 =
435
436 **One-click object cache, parity exclusions & admin polish.**
437
438 Object Cache:
439 - New: One-click Object Cache setup for Redis and Memcached — tests the connection, installs its own drop-in, and writes the wp-config constants (fully reversible). No drop-in plugin or PHP extension required.
440 - Improved: Dashboard now reports a degraded object cache honestly when the drop-in can't reach its backend, instead of implying caching is healthy.
441
442 Admin UX:
443 - New: WP admin submenu now mirrors the in-dashboard navigation, so the menu and dashboard tabs stay in sync.
444 - Improved: Settings changes apply live across dashboard navigation — no full page reload needed.
445 - Improved: Menu icon now recolors to the active accent state correctly.
446 - Improved: Success notifications are anchored to a single consistent position (bottom-center).
447 - Fixed: Long panel titles no longer push the subtitle off-screen.
448 - Fixed: Number-input spinners render consistently across browsers (Firefox no longer clips the value).
449
450 Cache exclusions:
451 - New: Exclusion lists now ship pre-populated with LiteSpeed / WP Rocket-parity defaults (16 URLs, 20 cookies, 28 query params), so a fresh install caches correctly out of the box.
452 - New: Exclusion rules now support regex via a `~` prefix (e.g. `~utm_[a-zA-Z0-9_-]+`), alongside glob and substring, with ReDoS guards.
453
454 Bug fixes:
455 - Fixed: Browser Cache no longer emits an "Array to string conversion" warning on multi-valued Cache-Control headers (also clears a false "nginx config required" notice).
456
457 License:
458 - Fixed: Activating a Pro license now unlocks the Pro panels immediately — no full page reload needed.
459
460 = [1.0.3] – 2026-06-07 =
461
462 **Topology-aware UX, nginx HIT counting, admin polish.**
463
464 Cache topology & UX:
465 - New: Topology-aware rewrite banner — the dashboard now detects containerized hosts (xclude, Kinsta, RunCloud Atomic, etc.) where the `$document_root` assumption doesn't hold, and tells the user exactly what to expect on their stack instead of silently failing.
466 - New: Unified nginx server-block snippet — one consolidated, copy-pasteable snippet (collapsible in the UI) replaces the previous fragmented sections.
467 - New: Nginx-served HITs are now counted — a dedicated access_log captures cache hits served directly by nginx (no PHP), so the dashboard "HITs in last 24h" stat is accurate on nginx setups.
468 - New: `X-XSpeed-Cache` response header — cache hits are now visible in the response headers, with a distinct value per serve layer (`HIT (nginx)` for the fast static path, `HIT (php)` for the drop-in fallback) so you can confirm a page was cached and tell exactly which layer served it.
469 - Improved: Browser Cache notice is topology-aware and renders its snippet in a proper code block.
470
471 Admin UX:
472 - New: Third-party admin notices are suppressed on xSpeed Cache admin screens (`page=xspeed*` only) — other plugins' "rate us" / promo notices no longer crowd the xSpeed Cache dashboard.
473 - New: Aligned sticky title-bar across the sidebar and content panels for a cleaner scroll experience.
474 - Improved: Browser Cache + GZIP notices probe-gate themselves — once the underlying issue is resolved, the notice dismisses on its own instead of lingering.
475
476 Benchmark:
477 - Fixed: "Without cache" leg of the dashboard speed test now appends a cache-buster query string. Previously it was hitting the cache and reporting an artificially-fast baseline, making the speedup number look small.
478
479 = [1.0.2] – 2026-06-02 =
480
481 **Static-rewrite cache, Site Health & Fonts.**
482
483 Static-rewrite cache + Site Health:
484 - 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).
485 - 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.
486 - 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.
487 - New: LiteSpeed LSCache coexistence — xSpeed Cache detects LSCache's server-level module and steps back instead of double-caching.
488 - New: Active rewrite probe — Health module pings the cache directory and confirms the rewrite is actually serving static bytes (not just present in .htaccess).
489 - New: WordPress Site Health integration — Tools → Site Health now lists an xSpeed Cache check covering static-rewrite status + nginx config requirements.
490 - New: Persistent banner — Cache panel warns the admin when caching is on but the static-rewrite block isn't engaged (slow fallback path).
491 - New: Copy-to-clipboard button on every config-snippet panel (nginx, GZIP, object-cache).
492
493 Fonts:
494 - 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.
495 - New: FontsModule tests covering the swap rewrite + preload `<link>` emission.
496
497 Improvements & fixes:
498 - Improved: Server-type detection is cached so CLI / cron contexts see the same server type as web requests.
499 - 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.
500 - Improved: Plugin Check pass — i18n textdomains, WP_Filesystem coverage, SQL preparation, sanitization, and plugin/readme headers all cleaned up for WordPress.org review.
501 - Fixed: nginx snippet rewritten to avoid the try_files trap that broke pretty permalinks.
502 - Fixed: Rewrite condition normalized for trailing-slash + non-trailing-slash URLs.
503 - Fixed: WP-Rocket-style canonical pattern — server-level conditional rewrite.
504 - Fixed: Minify tag-rewrite filters bail in non-frontend contexts (REST / admin / cron).
505 - Fixed: wp.org release zip now ships `vendor/` — resolves the 1.0.1 activation fatal.
506 - Improved: Release pipeline rebuilt — `.distignore`-driven dist build, CI verify step, version-named artifact on every run.
507 - Improved: Plugin version read from the PHP header — single source of truth.
508
509 = [1.0.1] – 2026-06-01 =
510
511 **Foundation release — full feature set + Pro hooks.**
512
513 Module architecture + LiteSpeed parity floor:
514 - 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).
515 - New: Health module — 24-hour hit/miss counter + activity log.
516 - New: Preloader module — sitemap-driven cache warmer with content-publish auto-warm.
517 - New: Cache exclusion intelligence — glob URL patterns, cookie patterns, User-Agent bypass, ignored query parameters.
518 - New: Per-device cache (mobile-separate).
519 - New: Per-post cache rules — don't-cache + custom expiry meta box.
520 - New: Minification — CSS / JS / HTML minify, combine, defer JS, delay JS, async CSS, remove ?ver= query strings.
521 - New: Lazy Load module — images / iframes / videos + auto CLS-fix.
522 - New: Disable Bloat module — 6 ergonomic toggles (dashicons, oEmbed, RSS, XML-RPC, jQuery Migrate, REST auth).
523 - New: Database module — optimize tables, scheduled cleanup, autoload analysis.
524 - New: CDN module — pull-zone URL rewriting.
525 - New: Cloudflare module — zone connect, auto-purge, dev-mode toggle.
526 - New: Object Cache module — Redis / Memcached config + status + flush.
527 - New: Browser Cache module — Cache-Control + Expires headers.
528 - New: Settings search across the entire dashboard with keyword highlighting.
529 - New: 3-step setup wizard on first activation with preset chooser and benchmark.
530 - New: Sidebar grouping under domain headers (Cache / Performance / Network / Insights / Tools).
531 - New: Sidebar tooltips + search shortcut in the collapsed rail.
532 - New: xspeed_branding filter — agencies can rebrand the dashboard.
533 - New: xspeed_cache_skip_for_post + xspeed_cache_expiry_for_post filters.
534
535 Pro-essentials (everything xSpeed Pro depends on, bundled here so any Pro release works against this single Free version):
536 - New: xspeed_module_descriptor filter — Pro hooks this to swap its panels to LicenseLockedPanel when license is invalid.
537 - New: AI Privacy module — GDPR off-switch + xspeed_ai_can_collect_data filter that Pro AI features must consult before recording visitor data.
538 - New: Pro upsell teasers — in-context inline cards on Cache, Minify, Lazy Load, Browser Cache and Disable Bloat panels.
539 - New: Locked Pro module rows in the sidebar — shows what Pro offers with a clear upgrade prompt.
540 - 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).
541 - New: Sidebar slot for the license module (appears when xSpeed Pro is installed).
542 - New: Global 36px form-control height baseline across the dashboard.
543 - New: filemtime() cache busting on admin asset URLs.
544
545 Improvements & fixes:
546 - Improved: React panel registry — modules auto-render in the dashboard.
547 - Improved: Portal-based save indicator — zero layout shift.
548 - Improved: Distribution zip prunes dev dependencies (composer install --no-dev).
549 - Fixed: 5 duplicate module icons + regression test.
550
551
552 = [1.0.0] – 2026-05-27 =
553 - Initial release.
554