
eXPDesigns Speed is a privacy-friendly performance toolkit for WordPress. It combines conservative public-page caching, background cache warming, WebP image tools, responsive image delivery, local asset optimization and plain-language recovery controls without an external optimization account.
The plugin starts with compatibility-sensitive controls disabled. Site owners review public content and exclusions before enabling shared caching, can inspect every cache decision through response headers, and can restore safe settings when a frontend optimization conflicts with the site.
Key Features
- Public-page disk cache with automatic page/post discovery and configurable lifetimes.
- Optional early cache that can serve validated HTML before WordPress loads.
- Automatic background cache warming after clearing or supported content changes.
- Clear cache status, exact bypass reasons and a three-request homepage test.
- Page-specific image discovery and batches of up to 100 Media Library attachments.
- Non-destructive WebP generation for originals and existing WordPress thumbnails.
- Responsive image candidates, intrinsic dimensions, lazy loading and exact LCP image priority.
- Reversible local CSS/JavaScript minification and opt-in asynchronous CSS or script defer.
- Optional marked Apache browser-cache and text-compression rules.
- Google Fonts display control, WordPress emoji removal and optional jQuery Migrate removal.
- Compatibility exclusions, frontend verification and one-click safe recovery.
- No telemetry, optimization account, remote license check or paid image quota.
Public Elementor forms
The optional Public Elementor forms setting is off by default. Enable only after reviewing that all eligible pages, forms, known public frontend configurations and consent markup contain identical guest content without custom visitor tokens. The compatibility inspector accepts standard unfilled Elementor contact fields, known guest configuration script IDs and standard unnamed Complianz category checkboxes. It does not modify forms or reCAPTCHA. Custom form actions, unknown forms/hidden fields, prefilled text and password/file fields remain excluded. Cookie-bearing, AJAX, POST and commerce contexts remain excluded by the existing rules.
In this mode the cache lifetime is capped at ten minutes and keys include the WordPress nonce tick. This is not proof of compatibility with arbitrary form actions, custom nonce filters, personalization, shortened provider tokens or Elementor extensions. Verify real form submission, consent interactions and email delivery on staging after enabling. The plugin does not submit forms during its cache probe.
Conservative exclusions
Cookie-bearing requests, query strings, authenticated requests, previews, non-GET requests, password-protected content, non-public posts and unsupported page types bypass caching. Responses with forms, common nonce or commerce markers, cookies, private cache directives or non-HTML content are not stored.
When WooCommerce is present, its shop/cart/checkout/account contexts and active sessions bypass caching. These safeguards are not a claim of complete compatibility with arbitrary extensions or custom personalization. Elementor and Germanized regression testing on your particular site is still necessary.
Scope and limitations
The standard cache serves output after WordPress and plugins load. The optional owned early-cache drop-in can serve previously validated anonymous HTML before WordPress loads. Background warming discovers published pages and posts in small batches. It depends on WordPress cron and loopback requests. This release does not generate per-page critical CSS or delay scripts until interaction.
Any cookie causes a bypass, including analytics or consent cookies. Pages with forms or common dynamic markers may therefore remain uncached. Multisite is not supported. Unknown personalization cannot be automatically detected: only approve content suitable for shared public output. Dynamic mobile/device, language, currency, location and membership variations require exclusion.
No PageSpeed score or performance gain is guaranteed. Measure multiple runs and test user interactions. An existing advanced-cache.php or recognized active page-cache plugin causes a bypass; no competing files are overwritten. WP_CACHE set to true on its own does not block caching. The dashboard identifies the detected blocker.
Image Optimization
Open eXPDesigns Speed > Image Optimization and start with one image. WebP support is required on the host. Quality is 82; only copies smaller than their source are used. Original files and attachment metadata are not replaced. WordPress-generated attachment image URLs and responsive sources are filtered while the plugin is active. Rendered img tags with a wp-image attachment class also use mapped local copies, including cached builder output. Unidentified hardcoded content, CSS backgrounds, CDN URLs and external images are not rewritten. Verify actual image delivery in the browser, particularly with Elementor.
Manual batch optimization is available in Media Library list view, up to three attachments per action. Automatic optimization of new uploads is optional and off by default. It can increase upload time. Each attachment processes at most 20 variants, each limited to 15 MB and 12 megapixels. Animated PNG/GIF, SVG and existing WebP/AVIF are skipped. Existing WordPress thumbnails are used as responsive candidates; original pixel files are not destructively resized. The plugin cannot infer every Elementor container width or rewrite CSS background images. Do not enable overlapping image conversion in another optimizer.
Frontend Optimization
Optimized image delivery now runs before standard and early page-cache storage, so cache hits retain verified WebP URLs. Identifiable attachment images can receive missing intrinsic dimensions and responsive candidates. Enter the exact local homepage LCP image URL reported by PageSpeed before enabling Responsive image loading. The selected image becomes eager/high priority and receives one preload. Other responsive lazy images receive an auto sizes prefix so compatible browsers can use rendered layout width when selecting a source. Verify the actual LCP element and page appearance after enabling.
Google Fonts display=swap and WordPress emoji removal are enabled by default. jQuery Migrate removal and ordinary HTML-comment removal are off by default compatibility controls. HTML comment removal preserves WordPress block and legacy conditional comments and does not alter inline CSS or JavaScript. Disable any control and clear/preload cache to roll back its rendered output.
Local CSS minification and conservative JavaScript compaction create versioned copies under wp-content/cache/expdesigns-speed-assets without editing original files. Optional asynchronous CSS delivery converts eligible local content stylesheets to non-blocking preload links with a no-JavaScript fallback. External, print, alternate, already preloaded, admin-bar and explicitly excluded styles remain unchanged. Safe script defer is opt-in and protects common jQuery, Elementor, WooCommerce, reCAPTCHA and consent handles. Use handle or URL-fragment exclusions for site-specific assets and test the header, hero, menus, sliders, forms, consent and commerce after enabling. Combining CSS or JavaScript is not performed.
Restore removes the delivery mapping and clears this plugin’s page cache. Clear other page/CDN caches yourself. Deactivation also stops filtered delivery. Generated copies remain beside the originals so existing cached links do not break; savings describe transfer-byte reduction across variants, not disk space recovered. Originals plus copies use more disk space. On uninstall, mappings and the upload option are removed, but generated copies are retained.
Batch processing and performance reports
The Image Optimization page can process 100 attachments per batch, one request at a time. Keep the page open. Pause waits for the current image to finish; Resume retries unfinished work. After completion start the next batch. There is no paid lifetime image quota. A failed request can retain a processing lock for ten minutes. Queue IDs, cursor and imported report summaries are stored locally per administrator. Library additions/deletions can change pagination; after the last batch, start again to rescan. The image table refreshes on page reload.
Page-specific image optimization lets an administrator select a published page and prepares a batch of up to 100 unique image attachments found in its featured image, normal content and Elementor page data. It prioritizes page work but does not prove that every visually rendered image was found. Theme headers/footers, CSS background URLs without attachment IDs, dynamically injected images, external URLs and reusable templates stored outside the selected page may need separate optimization.
Performance Report accepts Lighthouse or PageSpeed API JSON (maximum 5 MB), retaining selected audit titles, values, scores, tested URL and timestamp; full JSON is discarded. Findings are imported measurements, not automatic fixes. The Google PageSpeed link opens an external service and shares the website URL only when clicked. No API key or background Google request is used. Server-rule controls are explicit administrator actions and are never enabled during activation or update.
Privacy
The homepage test makes three cookie-free requests to the site itself when an administrator starts it. When automatic warming or frontend verification is enabled, WordPress cron also makes cookie-free requests to published URLs on the same site. These loopback requests do not send content to eXPDesigns or another external service. The last manual cache-status result is retained for five minutes per administrator; background progress and the latest health result are stored as WordPress options. The plugin sends no telemetry and requires no account or license. Cache files contain approved public HTML, creation timestamps and generation identifiers. Request keys are hashed. Cookies are inspected only to bypass caching; their values are not logged or stored. Page cache files are kept in wp-content/cache/expdesigns-speed and generated CSS/JavaScript copies in wp-content/cache/expdesigns-speed-assets. Limits are 100 standard and 100 early files and 2 MiB of HTML per entry, plus encoding overhead. Expired entries are not served and content changes invalidate the cache generation before background warming begins.
Development
Readable PHP, JavaScript and CSS source are included. No JavaScript bundler, build service or third-party runtime library is required. The expds_bypass_cache filter can add exclusions; it cannot override the built-in safeguards.
Screenshots

Site Health & Recovery showing compatibility checks and safe recovery tools.

Cache dashboard with cache status, setup checks and guided controls.

Performance Report with Lighthouse JSON import and practical optimization guidance.