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.
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.
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.
Plugin Website
Visit website
Share Post
Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.