xSpeed – AI Cache & Performance Optimizer

Changelog

[1.0.5] – 2026-06-18

Migration into Free, LiteSpeed cache ownership & accurate hit counting.

Migration:
– 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.

LiteSpeed:
– Fixed: On LiteSpeed/OpenLiteSpeed, xSpeed 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.
– 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.

Cache hit counting & stats:
– 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%.
– Fixed: Cache MISSes are now recorded inline so the hit-ratio stat reflects reality instead of being pinned at 100%.
– Fixed: PHP-served cache HITs are counted correctly and the drop-in device-bucket desync is resolved.
– 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).

Nginx:
– 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.
– 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.

Admin UX:
– New: Collapsible sidebar groups for cleaner navigation.
– Improved: Renamed the “Cache” module label to “Page Cache” for clarity.
– Improved: Sidebar group icons and chevrons brighten correctly on hover (white in dark mode).

Module fixes:
– Fixed: Lazy Load — four correctness bugs resolved.
– Fixed: Heartbeat — editor-context detection, CLI set support, and honest frontend copy.
– Fixed: Database cleaner — expired-transient cleanup gaps and a count mismatch.
– Fixed: Google Fonts — no longer double-appends display=swap on entity-encoded hrefs.
– Fixed: Settings now strictly validate boolean fields instead of casting, preventing bad values from silently becoming true/false.
– Fixed: Object Cache — core option groups marked non-persistent so the drop-in can always be deactivated; degraded backends detected honestly.
– Improved: Static-rewrite SSL probe verifies the certificate and no longer blocks admin page loads.

[1.0.4] – 2026-06-14

One-click object cache, parity exclusions & admin polish.

Object Cache:
– 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.
– Improved: Dashboard now reports a degraded object cache honestly when the drop-in can’t reach its backend, instead of implying caching is healthy.

Admin UX:
– New: WP admin submenu now mirrors the in-dashboard navigation, so the menu and dashboard tabs stay in sync.
– Improved: Settings changes apply live across dashboard navigation — no full page reload needed.
– Improved: Menu icon now recolors to the active accent state correctly.
– Improved: Success notifications are anchored to a single consistent position (bottom-center).
– Fixed: Long panel titles no longer push the subtitle off-screen.
– Fixed: Number-input spinners render consistently across browsers (Firefox no longer clips the value).

Cache exclusions:
– 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.
– New: Exclusion rules now support regex via a ~ prefix (e.g. ~utm_[a-zA-Z0-9_-]+), alongside glob and substring, with ReDoS guards.

Bug fixes:
– 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).

License:
– Fixed: Activating a Pro license now unlocks the Pro panels immediately — no full page reload needed.

[1.0.3] – 2026-06-07

Topology-aware UX, nginx HIT counting, admin polish.

Cache topology & UX:
– 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.
– New: Unified nginx server-block snippet — one consolidated, copy-pasteable snippet (collapsible in the UI) replaces the previous fragmented sections.
– 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.
– 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.
– Improved: Browser Cache notice is topology-aware and renders its snippet in a proper code block.

Admin UX:
– New: Third-party admin notices are suppressed on xSpeed admin screens (page=xspeed* only) — other plugins’ “rate us” / promo notices no longer crowd the xSpeed dashboard.
– New: Aligned sticky title-bar across the sidebar and content panels for a cleaner scroll experience.
– Improved: Browser Cache + GZIP notices probe-gate themselves — once the underlying issue is resolved, the notice dismisses on its own instead of lingering.

Benchmark:
– 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.

[1.0.2] – 2026-06-02

Static-rewrite cache, Site Health & Fonts.

Static-rewrite cache + Site Health:
– 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).
– 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.
– 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.
– New: LiteSpeed LSCache coexistence — xSpeed detects LSCache’s server-level module and steps back instead of double-caching.
– New: Active rewrite probe — Health module pings the cache directory and confirms the rewrite is actually serving static bytes (not just present in .htaccess).
– New: WordPress Site Health integration — Tools → Site Health now lists an xSpeed check covering static-rewrite status + nginx config requirements.
– New: Persistent banner — Cache panel warns the admin when caching is on but the static-rewrite block isn’t engaged (slow fallback path).
– New: Copy-to-clipboard button on every config-snippet panel (nginx, GZIP, object-cache).

Fonts:
– 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.
– New: FontsModule tests covering the swap rewrite + preload <link> emission.

Improvements & fixes:
– Improved: Server-type detection is cached so CLI / cron contexts see the same server type as web requests.
– 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.
– Improved: Plugin Check pass — i18n textdomains, WP_Filesystem coverage, SQL preparation, sanitization, and plugin/readme headers all cleaned up for WordPress.org review.
– Fixed: nginx snippet rewritten to avoid the try_files trap that broke pretty permalinks.
– Fixed: Rewrite condition normalized for trailing-slash + non-trailing-slash URLs.
– Fixed: WP-Rocket-style canonical pattern — server-level conditional rewrite.
– Fixed: Minify tag-rewrite filters bail in non-frontend contexts (REST / admin / cron).
– Fixed: wp.org release zip now ships vendor/ — resolves the 1.0.1 activation fatal.
– Improved: Release pipeline rebuilt — .distignore-driven dist build, CI verify step, version-named artifact on every run.
– Improved: Plugin version read from the PHP header — single source of truth.

[1.0.1] – 2026-06-01

Foundation release — full feature set + Pro hooks.

Module architecture + LiteSpeed parity floor:
– 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).
– New: Health module — 24-hour hit/miss counter + activity log.
– New: Preloader module — sitemap-driven cache warmer with content-publish auto-warm.
– New: Cache exclusion intelligence — glob URL patterns, cookie patterns, User-Agent bypass, ignored query parameters.
– New: Per-device cache (mobile-separate).
– New: Per-post cache rules — don’t-cache + custom expiry meta box.
– New: Minification — CSS / JS / HTML minify, combine, defer JS, delay JS, async CSS, remove ?ver= query strings.
– New: Lazy Load module — images / iframes / videos + auto CLS-fix.
– New: Disable Bloat module — 6 ergonomic toggles (dashicons, oEmbed, RSS, XML-RPC, jQuery Migrate, REST auth).
– New: Database module — optimize tables, scheduled cleanup, autoload analysis.
– New: CDN module — pull-zone URL rewriting.
– New: Cloudflare module — zone connect, auto-purge, dev-mode toggle.
– New: Object Cache module — Redis / Memcached config + status + flush.
– New: Browser Cache module — Cache-Control + Expires headers.
– New: Settings search across the entire dashboard with keyword highlighting.
– New: 3-step setup wizard on first activation with preset chooser and benchmark.
– New: Sidebar grouping under domain headers (Cache / Performance / Network / Insights / Tools).
– New: Sidebar tooltips + search shortcut in the collapsed rail.
– New: xspeed_branding filter — agencies can rebrand the dashboard.
– New: xspeed_cache_skip_for_post + xspeed_cache_expiry_for_post filters.

Pro-essentials (everything xSpeed Pro depends on, bundled here so any Pro release works against this single Free version):
– New: xspeed_module_descriptor filter — Pro hooks this to swap its panels to LicenseLockedPanel when license is invalid.
– New: AI Privacy module — GDPR off-switch + xspeed_ai_can_collect_data filter that Pro AI features must consult before recording visitor data.
– New: Pro upsell teasers — in-context inline cards on Cache, Minify, Lazy Load, Browser Cache and Disable Bloat panels.
– New: Locked Pro module rows in the sidebar — shows what Pro offers with a clear upgrade prompt.
– 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).
– New: Sidebar slot for the license module (appears when xSpeed Pro is installed).
– New: Global 36px form-control height baseline across the dashboard.
– New: filemtime() cache busting on admin asset URLs.

Improvements & fixes:
– Improved: React panel registry — modules auto-render in the dashboard.
– Improved: Portal-based save indicator — zero layout shift.
– Improved: Distribution zip prunes dev dependencies (composer install –no-dev).
– Fixed: 5 duplicate module icons + regression test.

[1.0.0] – 2026-05-27

  • Initial release.

Plugin Website
Visit website

Author
WPDeveloper
Version:
1.0.5
Last Updated
June 18, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 7.0
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.