
Beplus Performance Booster is a no-bloat performance plugin that gives you fine-grained
control over your site’s front-end assets. All features can be toggled independently
from a single settings page (Settings > Beplus Performance Booster).
All front-end optimisations are bypassed for logged-in administrators so you never
accidentally break the admin panel or your own editing experience.
Feature summary:
- JavaScript delay (Simple / Advanced mode) and defer with per-script exclude list
- JS Release Delay: image-load fallback timer for releasing delayed scripts
- CSS file and inline minification with cache
- Remove Unused CSS: per-URL cached stripping of unused CSS rules
- Non-render-blocking stylesheet loading
- Lazy load images with IntersectionObserver fallback
- Remove emoji, wp-embed, Gutenberg CSS, WooCommerce assets on non-shop pages
- HTML minification and comment stripping
- Browser cache and gzip/brotli rules via .htaccess
- Per-page option to disable the cache for specific posts/pages
- Custom CDN (pull-zone) URL rewriting for static assets
- Automatic WebP/AVIF image serving when a matching file already exists
- Cloudflare integration: one-click cache purge, zone auto-detection via API
Token, and Development Mode toggle from wp-admin
Settings Reference
Navigate to Settings > Beplus Performance Booster to configure the plugin.
⚡ JavaScript Optimization
Delay JS Execution
Default: off
Delays all non-excluded front-end scripts until the first user interaction (click,
scroll, keydown, or touchstart), or until the JS Release Delay timer fires —
whichever comes first.
Delay Mode — choose how scripts are intercepted:
- Simple — converts WordPress-enqueued external scripts to
text/plain
placeholders and replays them on first interaction. Low risk, no event-queue replay. - Advanced — output-buffer approach that intercepts every
<script>tag on the
page (including hardcoded theme scripts and dynamically injected ones) via
MutationObserver. ReplaysDOMContentLoadedandwindow.loadevent queues in
correct order. Test thoroughly before enabling on production.
JS Release Delay (ms) — fallback timer (ms) that releases delayed scripts after
above-fold images and fonts finish loading, without requiring user interaction.
0 = disabled — only user interaction releases delayed scripts.
Defer Non-Critical JS
Default: off
Adds the defer attribute to every non-excluded <script> tag so scripts are
fetched in parallel and executed after the HTML is parsed. jQuery and
jquery-migrate are always protected from deferral.
Exclude JS Files
Default: empty
One URL keyword per line. Any script whose src attribute contains a listed
keyword is excluded from both Delay and Defer. Use this to protect scripts that
must run immediately (e.g. analytics that need to capture the first page view).
Examples: jquery, woocommerce, my-critical-script
🎨 CSS Optimization
Minify Inline CSS
Default: off
Strips block comments (/* … */), collapses redundant whitespace, and removes
trailing semicolons from every inline <style> block in <head>. License
comments (/*! … */) are preserved. Spaces around + are intentionally kept
so calc(100% + 20px) expressions are never broken.
Minify CSS Files
Default: off
Requires: wp-content/uploads/bepluspb-cache/ directory to be writable
Minifies every enqueued external CSS file and serves the cached version from
wp-content/uploads/bepluspb-cache/. Already-minified *.min.css files and
external CDN stylesheets are skipped automatically. Cache files are named using a
12-character content MD5 hash so they self-invalidate whenever the source changes.
Non-Render-Blocking CSS
Default: off
Converts <link rel="stylesheet"> tags to the preload + onload swap pattern:
<link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" ...></noscript>
This prevents stylesheets from blocking the initial render. A <noscript> fallback
ensures CSS loads correctly even when JavaScript is disabled.
Tip: if you see a flash of unstyled content (FOUC), add your theme’s main stylesheet
URL keyword to the Exclude CSS Files list.
Exclude CSS Files
Default: empty
One URL keyword per line. Stylesheets whose href contains a listed keyword are
left completely untouched by the Non-Blocking, Inline All CSS, Minify CSS Files,
and Remove Unused CSS features.
Remove Unused CSS
Default: off
Requires: wp-content/uploads/bepluspb-cache/ directory to be writable
Scans the fully rendered page and strips CSS rules whose selectors never appear
in that page’s HTML, caching the trimmed stylesheet per URL. This is a static
text match (not a real browser render): the first visit to a URL generates the
trimmed file in the background while still serving the original CSS; later
visits to the same URL load the trimmed version. Classes added dynamically by
JavaScript after page load will not be detected as “used” — add them to the
Unused CSS Selector Safelist below.
Unused CSS Selector Safelist
Default: empty
One selector or keyword per line (trailing * wildcard supported). Rules
matching these are always kept regardless of whether they were detected as
used. Use this for JS-toggled classes (menus, modals, tabs, accordions) and
plugin/page-builder dynamic states.
Example: .active, .is-open*, .woocommerce-*
Unused CSS URL Excludes
Default: empty
One URL keyword per line. Matching pages never have unused CSS removed.
Recommended for checkout/cart and other heavily dynamic pages.
🖼️ Lazy Load Images
Enable Lazy Loading
Default: off
Adds loading="lazy" to qualifying <img> tags found in post content, featured
images, widget text, and <picture> elements. For browsers that do not support the
native loading attribute, a small IntersectionObserver polyfill is injected into
wp_footer (activates only when native support is absent).
Skip First N Images
Default: 1
Images 1 through N are marked loading="eager" instead of loading="lazy".
Set this to at least 1 to protect the hero/LCP image from being lazy-loaded, which
would hurt Core Web Vitals. Accepts 0–20.
Exclude by CSS Class
Default: empty
Comma-separated CSS class names. Any <img> that has one of these classes loads
eagerly (not lazily).
Example: hero-image, no-lazy, skip-lazy
Exclude by Element ID
Default: empty
Comma-separated element IDs. Any <img> with a matching id attribute loads
eagerly.
Example: hero-banner, site-logo
Exclude by Filename
Default: empty
Comma-separated partial filename strings. Any <img> whose src URL contains one
of these strings loads eagerly.
Example: logo, hero, banner
🗑️ Remove Unused Assets
Remove Emoji Scripts
Default: off
Removes the WordPress emoji detection script, its inline stylesheet, and the
s.w.org DNS prefetch hint. Safe to enable if you use real Unicode emoji in your
content — browsers display them natively without the WordPress helper.
Remove oEmbed / wp-embed
Default: off
Removes the wp-embed.js script and the oEmbed discovery links added to <head>.
Also unregisters the oEmbed REST API endpoint. Disable only if you rely on
embedding your WordPress posts inside other websites.
Remove Block / Gutenberg CSS
Default: off
Dequeues wp-block-library, wp-block-library-theme, and global-styles
stylesheets on the front-end. Disable if your theme or content depends on
Gutenberg block styles.
Disable WooCommerce Assets on Non-Shop Pages
Default: off
Requires: WooCommerce active
Dequeues WooCommerce scripts and styles on pages that are unrelated to the shop,
cart, checkout, or account. WooCommerce assets are always kept on those pages.
📄 HTML Optimization
Minify HTML Output
Default: off
Collapses redundant whitespace between HTML tags in the full page output. Content
inside <pre>, <textarea>, <script>, and <style> tags is always preserved
exactly as-is.
Remove HTML Comments
Default: off
Strips HTML comments (e.g. theme generator tags, plugin banners) from the page
output. Conditional IE comments are also removed.
Remove Inline JS Comments
Default: off
Removes // single-line and /* … */ block comments from inline <script>
blocks in the HTML output. String literals and template literals are never
modified. License comments (/*! … */) are preserved.
Remove Inline CSS Comments
Default: off
Removes /* … */ block comments from inline <style> blocks in the HTML output.
🚀 Browser Cache Headers (.htaccess)
Enable Browser Caching
Default: off
Requires: Apache with mod_expires, mod_headers, mod_deflate. .htaccess writable.
Injects the following directives into the root .htaccess file inside a clearly
labelled block that is never duplicated:
- Gzip compression (mod_deflate) for HTML, CSS, JS, JSON, SVG, and fonts.
- Brotli compression (mod_brotli, Apache 2.4.26+) for the same types.
- Expires headers (mod_expires): 1-year cache for static assets; no-cache
for HTML and API responses. - Cache-Control headers (mod_headers):
max-age=31536000, public, immutable
for CSS, JS, images, and fonts.
Disabling this option or deactivating the plugin removes the injected block cleanly.
📦 JS File Minification & Cache
Minify JS Files
Default: off
Requires: wp-content/uploads/bepluspb-cache/ directory to be writable
Minifies every enqueued JavaScript file using a safe character-by-character comment
stripper that correctly handles string literals, template literals, and URL protocol
slashes (https://). Already-minified *.min.js files and external CDN scripts are
skipped. Cache files use a 12-character content MD5 hash for automatic cache busting.
Lines are never joined to avoid breaking JavaScript’s Automatic Semicolon Insertion
(ASI) rules.
Cache Status
Shows how many CSS and JS files are currently stored in the cache directory
(wp-content/uploads/bepluspb-cache/). Use the “Clear CSS/JS Cache” button to delete
all cached files; they are regenerated on the next page load.
The “Beplus Performance Booster” item in the WordPress admin bar (visible to administrators on
both the front-end and back-end) shows cache size and file count in a dropdown panel
and provides a one-click button to clear the cache.
☁️ CDN
Enable CDN
Default: off
Rewrites matching static-asset URLs on this site to the CDN domain configured
below — enqueued CSS/JS, media library images (including responsive srcset),
matching URLs inside post content and widgets, and any other matching URL in
the rendered page (including root-relative paths written directly into theme
or page-builder markup). External URLs and already-CDN URLs are left untouched.
Like other front-end optimisations, this is skipped for logged-in administrators.
CDN URL
Default: empty
Your CDN pull-zone domain — for example, the hostname assigned when you add
this site as a CDN zone with a provider such as QUIC.cloud
(e.g. https://xxxxxxxx.quic.cloud), BunnyCDN, or KeyCDN, or a custom domain
CNAME’d to one. This is a generic pull-zone rewriter and works with any CDN
provider — it is not an official integration with any of them.
File Types
Default: css,js,jpg,jpeg,png,gif,webp,avif,svg,ico,woff,woff2,ttf,otf,eot,mp4,webm,pdf
Comma-separated file extensions. Only URLs ending in one of these are rewritten to
the CDN; everything else (PHP endpoints, REST/AJAX requests, admin URLs) is
untouched by design since the matching is extension-based.
Exclude from CDN
Default: empty
One URL keyword per line. URLs containing any of these strings stay on your own
domain instead of being rewritten to the CDN.
Serve WebP/AVIF Images
Default: off
When enabled, JPG/PNG image URLs are swapped for a same-named .avif or
.webp file when one already exists next to it and the visitor’s browser
declares support for that format (via the Accept header). Prefers AVIF over
WebP when both are supported and both files exist. This plugin does not
generate or convert any images itself — it only rewrites the URL when a
matching file is already present on disk (e.g. created by WordPress core,
a theme build step, or another optimization/conversion tool).
🔶 Cloudflare
Keep Cloudflare’s edge cache in sync with this plugin’s own cache, and
control Cloudflare Development Mode, without leaving wp-admin. This does
not set up Cloudflare as a CDN/DNS proxy for you — it only talks to a
Cloudflare zone you have already added your domain to. All Cloudflare API
calls are admin-triggered only (nonce + capability checked, and rate
limited); nothing is called automatically on a regular front-end page load.
Enable Cloudflare Integration
Default: off
When on, the existing “Clear Cache” button also purges Cloudflare’s cache
for the configured zone, in addition to this plugin’s own CSS/JS cache.
API Token
Default: empty
Your Cloudflare API Token (not a Global API Key — legacy Global API Keys
are not supported). Create one at
dash.cloudflare.com/profile/api-tokens
scoped to Zone > Cache Purge and Zone > Zone Settings. Click Test
Connection to validate the token and auto-detect the matching zone for
this site’s domain — the zone ID/name are never typed in by hand, only
ever written by a successful Test Connection.
Matched Zone
Read-only, auto-populated by Test Connection.
Shows the Cloudflare zone name and ID that was matched to this site’s
domain. Displays “Not configured” until Test Connection succeeds.
Purge Cloudflare Now
Button in the “Cloudflare Cache” card — immediately purges everything on
the configured zone via the Cloudflare API, independent of the main
Clear Cache button.
Development Mode (Turn ON / Turn OFF / Check Status)
Buttons in the “Development Mode” card — temporarily bypasses Cloudflare’s
cache so origin changes show up immediately, useful while actively editing
a live site. Cloudflare automatically turns Development Mode off after 3
hours; “Check Status” always re-queries the live value from Cloudflare
rather than trusting a locally cached state.
Per-Page Cache Disable (Meta Box)
Every post and page edit screen includes a “Beplus Performance Booster” meta box in the sidebar.
Checking Disable CSS/JS cache optimizations for this page/post stores the
_bepluspb_disable_cache flag in post meta. When set, the Minify CSS Files and Minify
JS Files features are bypassed for that specific URL and the original (unminified)
files are served instead. Useful for debugging or resolving conflicts on a specific
page without disabling minification site-wide.
About BePlus
This plugin is developed and maintained by BePlus,
a WordPress and Shopify development studio with 10+
years of experience building themes and plugins for
nonprofits and eCommerce brands.
Learn more at beplusthemes.com.
Screenshots

Dashboard tab — Master cache toggle, one-click recommended-settings panel, and cache statistics.

Cache Files tab — CSS and JS file minification options with cache-exclusion controls.

Status tab — Live system status report covering PHP, WordPress, server environment, and plugin settings.