Easy Optimizer – Speed, Cache, Unused CSS, Delay JS, Lazy Load, LCP & Core Web Vitals

Changelog

2.3.0

  • Added: first-run setup wizard. On a new install, nothing is enabled until you choose one of three presets — Safe (cache, browser caching, gzip, font-display swap, LCP preload, lazy load, cache preload, moderate prefetch), Balanced (adds Remove Unused CSS in Async mode, Delay JS with jQuery excluded, and add-missing-image-dimensions), or Maximum (Used CSS in Delay mode, Delay JS including jQuery, lazy-load fonts). Existing sites keep their settings and are not shown the wizard.
  • Added: Minify CSS and Minify JavaScript. Each minifies local files only, caches the result on disk, and processes a given file just once, so the per-request cost stays minimal. Already-minified files are skipped, relative url()/@import paths inside CSS are rewritten so assets keep resolving, and the Delay-JS loader and lazy-load runtime are never touched. Minify reuses the existing Exclude Stylesheets / Exclude Scripts fields and works independently of Remove Unused CSS and Delay JS.
  • Added: Safe Mode button (Settings tab) that instantly reverts to the conservative Safe preset and turns off the riskier features — a one-click known-good baseline for troubleshooting.
  • Added: query-string debug switches. Append ?nooptimize, ?nocache, ?nodelayjs, or ?norucss to any front-end URL to disable that feature for a single request without changing settings (the switched request is never cached, so you always see fresh output). Instructions are shown on the Settings tab.
  • Fixed: Remove Unused CSS now has a fail-safe — original stylesheets are only delayed/async’d/removed after a valid Used CSS file has been generated and passes a confidence check (minimum size, real rule blocks, at least one stylesheet processed). If generation comes up empty or low-confidence, the page is served with its original styling untouched and is not cached, preventing rare unstyled-page output.
  • Changed: the diagnostics opt-in is now requested in the setup wizard (and remains toggleable later), so the separate opt-in admin notice has been removed.

2.2.2

  • Fixed: cached page count could repeatedly drop back to near-zero while the preload queue stayed at hundreds/thousands of URLs. Recording a page’s LCP element no longer wipes the entire cache and restarts the whole preload crawl — it now refreshes only the affected page. This removes a self-perpetuating clear → re-preload loop that prevented the cache from ever filling on some sites.
  • Fixed: lazily-expired cached pages now adjust the page counter correctly, so the dashboard count no longer drifts upward after TTL expiry.
  • Improved: cached files are written atomically (temporary file + rename) so a concurrent visitor can never receive a half-written page under load.
  • Improved: Apache-served cache files always send a single Vary: Accept-Encoding.
  • Added: Debug Log now records excessive cache purges, stalled or looping preload queues, the origin of every full cache clear, and cache-write failures — making invalidation loops easy to spot.
  • Added: Settings → Debug Logging lets you enable/disable error and warning logging independently. Error logging is on by default.
  • Fixed: the Debug Log is no longer deleted when you clear the cache. It now lives in wp-content/cache/easyopt-logs/ (outside the cache directory); any existing log is migrated automatically on update.
  • Improved: preload and serving warnings are far less noisy — the preload “queue growing” and “stalled” warnings now only fire on a genuine problem (e.g. a real invalidation loop, or an actively-running queue that isn’t progressing), not during a normal preload start or behind a CDN.
  • Performance: no feature changes; the loop fix substantially lowers CPU and disk usage on busy and low-resource/shared hosting.

2.2.1

  • Fixed: HTTP 500 on some Apache/LiteSpeed servers after writing .htaccess. Removed the obsolete Internet Explorer / Netscape 4 BrowserMatch gzip directives, which are rejected by the LiteSpeed/OpenLiteSpeed config parser. Gzip and Brotli compression are unchanged — the exact same content types are still compressed.
  • Fixed: AddOutputFilterByType (Gzip/Brotli) is now wrapped in <IfModule mod_filter.c>, the correct module on Apache 2.4, instead of mod_deflate.c.
  • Fixed: Cache-directory responses no longer send Content-Encoding: gzip on uncompressed files — the gzip headers are now scoped to the .html_gzip cache files only, preventing rare decode errors for clients that don’t accept gzip.
  • New: Per-server safety probe. Before writing to the live .htaccess, risky rule classes (Gzip directives and Options -Indexes) are now tested in an isolated throwaway directory. Any rule the server can’t parse is skipped automatically so it can never 500 the site — the page-cache rewrite, Expires headers and everything else still apply.
  • New: Options -Indexes is only emitted after passing its sandbox probe (it 500s where AllowOverride forbids it). A blank index.html is written to the cache directory as a universal directory-listing safeguard.
  • New: OpenLiteSpeed is now detected and the Gzip block is skipped on it (the server compresses natively), matching how other top performance plugins behave.
  • Improved: The loopback validation no longer treats a blocked loopback as success. If it can’t confirm the write, an admin notice is shown instead of silently continuing.
  • New filters: easyopt_htaccess_gzip block output and easyopt_probe_unverified_default / easyopt_probe_unverified_ok for hosts that block loopback HTTP.

2.2.0

  • New: Auto-detect and purge server-level caches across major hosting providers (Cloudways, Kinsta, WP Engine, SiteGround, Pantheon, Flywheel, Pressable, and more).
  • New: Dashboard card showing detected server cache layers.
  • New: Direct Varnish HTTP PURGE fallback for Cloudways when Breeze is not installed.
  • Improved: Server cache purge is rate-limited to once per request and uses non-blocking HTTP.
  • Improved: Full server purge only on explicit cache clear — post saves only purge the changed URL.
  • Improved: Apache htacess creation.
  • Added support for Pantheon, Flywheel, Pressable, Closte, and Convesio hosting environments.

2.1.0

  • New: Optimization tab split into 5 sub-tabs — JavaScript, CSS, Lazy Load, Preload LCP and Prefetch Pages
  • New: Database tab split into 2 sub-tabs — Database Cleanup and Autoload Health
  • New: Heartbeat & Cron tab — consolidates Heartbeat API control, WP-Cron throttle and Cron Event Manager
  • New: Settings tab with Import/Export and “Delete all plugin data on uninstall” toggle
  • New: Collapsible help sections throughout all panels
  • New: Dependency check on Lazyload Fonts when Remove Unused CSS is not enabled
  • New: Disable Block Library CSS toggle in Bloat Removal
  • New: Rewrite Elementor Background Images toggle in Image CDN panel
  • New: Stylesheet Behavior “Remove” option with inline breakage warning
  • Improved: “Instant Load” renamed to “Prefetch Pages” for clarity
  • Improved: Cache exclusion fields displayed in compact 3-column grid
  • Improved: Preload Cache enabled by default with auto-restart on cache clear
  • Improved: Admin toolbar “Clear All Cache” triggers preload restart when preload is enabled
  • Performance: pre_option shim uses prefix-based early exit
  • Performance: Database cleanup counts moved to async REST API call

2.0.3

  • New: Heartbeat API control with location and frequency settings
  • New: WP-Cron frequency throttle using transient-based lock
  • New: Cron Event Manager with manual run and delete
  • New: Defer JavaScript method as alternative to delay
  • New: Separate mobile/desktop Used CSS generation
  • New: Autoload Health auditor
  • New: Expanded mobile safelist for Used CSS
  • Fixed: Cloudflare test connection no longer requires pre-save
  • Improved: Dashboard module rows fully clickable

2.0.2

  • Improved: Database snapshot restore

2.0.1

  • Improved: Performance optimizations for conditional module loading

2.0.0

Major architecture rewrite with 25+ new features including page cache, cache preload, remove unused CSS, delay JavaScript, LCP preload, prefetch pages, font optimization, database cleanup with snapshots, Cloudflare integration, 9 hosting integrations, 8 accessibility toggles, 2 SEO toggles, 15 bloat removal toggles and a new admin dashboard.

1.1

  • Initial release with lazy load and Image CDN.

Plugin Website
Visit website

Author
FluxPress
Version:
2.3.0
Last Updated
June 5, 2026
Active Installs
100
Requires
WordPress 6.4
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.