Title: BaseCloud Boost
Author: BaseCloud
Published: <strong>སྤྱི་ཟླ་དྲུག་པ། 3, 2026</strong>
Last modified: སྤྱི་ཟླ་བརྒྱད་པ། 31, 2026

---

Search plugins

![](https://ps.w.org/basecloud-boost/assets/banner-772x250.png?rev=3559990)

![](https://ps.w.org/basecloud-boost/assets/icon-256x256.png?rev=3559990)

# BaseCloud Boost

 By [BaseCloud](https://profiles.wordpress.org/basecloud/)

[Download](https://downloads.wordpress.org/plugin/basecloud-boost.1.4.1.zip)

 * [Details](https://dzo.wordpress.org/plugins/basecloud-boost/#description)
 * [Reviews](https://dzo.wordpress.org/plugins/basecloud-boost/#reviews)
 *  [Installation](https://dzo.wordpress.org/plugins/basecloud-boost/#installation)
 * [Development](https://dzo.wordpress.org/plugins/basecloud-boost/#developers)

 [Support](https://wordpress.org/support/plugin/basecloud-boost/)

## Description

**BaseCloud Boost** is a professional-grade WordPress performance plugin that dramatically
speeds up your website through intelligent full-page caching, asset optimization,
and smart cache management.

#### Core Features

**Page Cache**

 * Full-page HTML caching that bypasses WordPress and PHP entirely for maximum throughput
 * GZIP and Brotli compression variants stored alongside each cached page
 * Smart cache invalidation on post updates, comment submissions, and taxonomy changes
 * Configurable cache lifetime (default: 7 days)
 * Separate mobile device cache for responsive-aware caching
 * Cache exclusion by URL pattern or cookie name

**Asset Optimization**

 * HTML, CSS, and JavaScript minification
 * CSS and JS file combining to reduce HTTP requests
 * JavaScript deferral for faster first paint
 * Critical CSS extraction and inline injection
 * Remove query strings from static asset URLs for better CDN hit rates
 * Async-load non-critical Google Fonts with font-display=swap

**Media Optimization**

 * Reliable native lazy loading for images, iframes, and videos — defers off-screen
   media without ever hiding it, so images always appear
 * On-the-fly image compression — generates high-quality WebP copies of your images
   on upload, plus a one-click Bulk Compress tool for your existing media library
 * Quality-preserving compression — originals are never altered; WebP copies are
   created alongside them at a tunable visually-lossless quality
 * WebP and AVIF serving — automatically serves the next-gen format when available
 * Video facade for YouTube and Vimeo — replaces iframes with click-to-play thumbnails
 * preload=”none” applied to video tags for faster page loads

**Cache Preloader**

 * Automatic sitemap-based URL discovery
 * Background batch processing to keep the cache warm
 * Real-time progress tracking in the admin dashboard

**CDN Integration**

 * Generic CDN hostname rewriting for any CDN provider
 * Cloudflare API cache purging — automatically clears Cloudflare edge cache on 
   purge
 * BunnyCDN API cache purging — mirrors local purge events to your Pull Zone

**Database Optimization**

 * Post revision cleanup
 * Auto-draft and trashed post/comment removal
 * Expired transient removal
 * Orphaned postmeta cleanup
 * Table optimization (OPTIMIZE TABLE)

**Security Headers**

 * X-Content-Type-Options, X-Frame-Options, Referrer-Policy
 * Permissions-Policy (FLoC/Topics API opt-out)
 * Strict-Transport-Security (HSTS) for HTTPS sites

**Developer-Friendly**

 * Full hook API: filter cache behaviour, modify HTML before write, extend CDN purge
   logic
 * WP-CLI commands for cache management
 * PSR-4 autoloaded class architecture

### External Services

BaseCloud Boost connects to the following external services **only when you explicitly
configure them** in the plugin settings. No data is sent to any third-party service
by default.

#### Cloudflare Cache Purge API (Optional)

If you enable Cloudflare CDN integration and provide a Zone ID and API Token, the
plugin calls the Cloudflare API to purge cached content whenever your local cache
is cleared.

 * Service: Cloudflare, Inc.
 * What it is used for: Purging edge-cached pages so visitors see fresh content 
   after a cache clear.
 * When data is sent: Only when you trigger a cache purge (manually, on post save,
   or via plugin action).
 * Data sent: List of URLs to purge and your Cloudflare Zone ID (via your API token).
 * API endpoint: https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache
 * Terms of Service: https://www.cloudflare.com/terms/
 * Privacy Policy: https://www.cloudflare.com/privacypolicy/

#### BunnyCDN Cache Purge API (Optional)

If you enable BunnyCDN integration and provide an API Key and Pull Zone ID, the 
plugin calls the BunnyCDN API to purge cached content whenever your local cache 
is cleared.

 * Service: BunnyWay d.o.o. (BunnyCDN)
 * What it is used for: Purging Pull Zone edge cache so visitors receive fresh content.
 * When data is sent: Only when you trigger a cache purge.
 * Data sent: URLs to purge and your API key.
 * API endpoints: https://api.bunny.net/purge and https://api.bunny.net/pullzone/{
   id}/purgeCache
 * Terms of Service: https://bunny.net/tos/
 * Privacy Policy: https://bunny.net/privacy/

#### Performance Metrics Webhook (Optional)

If you configure a webhook URL in the plugin settings, BaseCloud Boost will POST
a JSON payload containing anonymous performance metrics to that URL on a daily cron
schedule.

 * Service: Custom endpoint configured by you.
 * What it is used for: Sending performance data to an external monitoring or reporting
   system.
 * When data is sent: Once per day via a scheduled cron event, and when you manually
   send a test from the admin panel.
 * Data sent: Cache hit rate, cache size, bytes saved (HTML/CSS/JS), last purge 
   time, plugin version, site URL, and site name. No user data or passwords are 
   included.
 * Endpoint: Your custom URL — you are responsible for its security and privacy 
   compliance.

#### Google PageSpeed Insights API (Optional)

If you enter a PageSpeed Insights API key in the Lighthouse settings, the plugin
calls Google’s PageSpeed Insights API to run automated Lighthouse audits for your
site.

 * Service: Google LLC (PageSpeed Insights)
 * What it is used for: Running automated Lighthouse performance audits (Performance,
   Accessibility, Best Practices, SEO scores).
 * When data is sent: When you manually trigger an audit from the Lighthouse settings
   page, or on the scheduled Lighthouse cron (if enabled).
 * Data sent: Your site URL and your API key.
 * API endpoint: https://www.googleapis.com/pagespeedonline/v5/runPagespeed
 * Terms of Service: https://developers.google.com/terms
 * Privacy Policy: https://policies.google.com/privacy

#### Vimeo oEmbed API (Conditional)

If a page contains a Vimeo video facade, the plugin’s frontend JavaScript fetches
the video thumbnail from the Vimeo public oEmbed API. This happens in the visitor’s
browser, not on the server.

 * Service: Vimeo, Inc.
 * What it is used for: Retrieving the video thumbnail image to display in the click-
   to-play facade.
 * When data is sent: When a page containing a Vimeo video facade is viewed by a
   visitor.
 * Data sent: The Vimeo video ID (no user data or authentication is required).
 * API endpoint: https://vimeo.com/api/v2/video/{id}.json
 * Terms of Service: https://vimeo.com/terms
 * Privacy Policy: https://vimeo.com/privacy

#### Google Tag Manager / Google Fonts Preconnect Hints (Conditional)

When the Resource Hints module is enabled, the plugin outputs `<link rel="preconnect"
>` and `<link rel="dns-prefetch">` hints for common third-party origins (Google 
Tag Manager, Google Analytics, Google Fonts, jsDelivr/cdnjs). These are passive 
hints that tell the browser to pre-establish connections — no data is sent by the
plugin itself.

 * Service: Various (Google LLC, Cloudflare, Inc.)
 * What it is used for: Reducing connection latency for third-party resources already
   loaded by your theme or other plugins.
 * When data is sent: The browser (not the plugin) initiates the connection. No 
   plugin data is transmitted.
 * Terms of Service / Privacy: Governed by the respective third-party services.

All remote requests originating from the plugin server-side use WordPress’s built-
in wp_remote_post() / wp_remote_get() functions and respect your server’s SSL configuration.

## Installation

 1. Upload the `basecloud-boost` folder to the `/wp-content/plugins/` directory.
 2. Activate the plugin through the ‘Plugins’ menu in WordPress.
 3. Navigate to **BaseCloud Boost > Dashboard** to configure.
 4. Enable Page Cache and click **Boost Cache** to start caching immediately.

## FAQ

### Does BaseCloud Boost work with WooCommerce?

Yes. Cart, checkout, and My Account pages are automatically excluded from caching.
Active WooCommerce cart session cookies bypass the cache transparently.

### Is it compatible with WordPress Multisite?

Yes. BaseCloud Boost supports WordPress Multisite with per-site cache directories.

### Can I use it with Cloudflare or BunnyCDN?

Yes. BaseCloud Boost includes Cloudflare and BunnyCDN API integrations. When you
purge the local page cache, the plugin automatically purges the corresponding edge
cache too.

### Will it conflict with other caching plugins?

Running multiple full-page caching plugins simultaneously is not recommended and
can produce unexpected results. BaseCloud Boost detects and warns you about other
active caching plugins on the Dashboard.

### What if my site breaks after activating the plugin?

Deactivate the plugin from the Plugins screen. This automatically removes the advanced-
cache.php drop-in and disables WP_CACHE, restoring your site to its previous state.

### Does BaseCloud Boost modify wp-config.php?

Yes. On activation it sets `define( 'WP_CACHE', true )` in `wp-config.php` so WordPress
loads the `advanced-cache.php` drop-in. On deactivation this line is removed. The
change is minimal and clearly labelled so it is easy to identify.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“BaseCloud Boost” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ BaseCloud ](https://profiles.wordpress.org/basecloud/)

[Translate “BaseCloud Boost” into your language.](https://translate.wordpress.org/projects/wp-plugins/basecloud-boost)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/basecloud-boost/), 
check out the [SVN repository](https://plugins.svn.wordpress.org/basecloud-boost/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/basecloud-boost/)
by [RSS](https://plugins.trac.wordpress.org/log/basecloud-boost/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.4.1

**Used CSS is now opt-in. If you updated to 1.4.0, this switches it back off for
you.**

1.4.0 introduced the Used CSS engine and switched it on for everybody. That was 
the wrong call and this release corrects it.

The engine’s analysis was checked thoroughly, but only offline — against copies 
of real client pages, never inside a running WordPress site. The parts that touch
a live request (finding the stylesheets in the page, swapping in the shortened version,
building it after the page is sent) had no testing at all, and there was no library
of theme and plugin combinations to justify turning something that rewrites every
page’s CSS on for everyone by default.

 * **Used CSS is off unless you switch it on.** Updating from 1.4.0 turns it off
   for you and clears the cache, once. If you deliberately switch it back on afterwards,
   it stays on. Nothing about how it works has changed — it is the same engine, 
   now behind a switch.
 * **Dropping unused font alphabets is off too.** It reads the characters on the
   page to decide which alphabets a font needs, and it cannot see text that arrives
   afterwards — comments, product names loaded as you scroll, translations inserted
   by a script. Those would show as empty boxes. A version that decides from your
   site’s language instead of from one page is the correct approach and is not built
   yet.
 * **Everything else from 1.4.0 is unaffected** and stays as it was: the page cache,
   image conversion, the third-party script delay, Elementor Speed, and Lazy Render(
   which was already off by default).

Note that the font-swap layout fix introduced in 1.4.0 is delivered as part of the
Used CSS bundle, so it is inactive while Used CSS is off. Separating the two is 
on the list.

**What happens next:** a compatibility test suite across common themes and plugins,
with screenshot comparison and scripted interaction, so that switching this on by
default is backed by evidence rather than judgement. Until then it stays opt-in.

#### 1.4.0

**The CSS release: your pages stop waiting for stylesheets they cannot use**

A page cannot show anything until the browser has downloaded and read every stylesheet
in its head. Measured across ten live client sites, each one was making phones read
between 0.8 MB and 1.9 MB of CSS before a single word could appear — and between
a third and three quarters of it belonged to widgets, icon sets, forms and languages
that were nowhere on the page. Not one byte of it was being loaded in the background.
That, rather than JavaScript, is why mobile scores stayed low on sites where the
cache, the image conversion and the third-party script delay were all working correctly.

 * **New: Used CSS (switched on).** Boost now works out which style rules a page
   can actually reach, and serves only those — as one stylesheet per group instead
   of dozens of separate requests. On the sites it was built against this removed
   between 24% and 73% of the CSS blocking the first paint; on one page 1,316 KB
   fell to 355 KB, and a stylesheet that appeared four separate times went from 
   57 KB to 2 KB. Stylesheets are only ever merged in the order they already appear
   and never across an inline style block, so nothing changes position and your 
   styling order is exactly what it was. **The first visitor to a page never waits
   for this** — the page is served exactly as before while Boost works it out in
   the background, and the shorter version starts serving once it is ready.
 * **New: a safety net that repairs its own mistakes (switched on).** Everything
   Used CSS removes is still loaded, as a second stylesheet that does not hold up
   the page. Those rules match nothing, so normally they do nothing at all — but
   if a rule was removed in error, or only becomes needed once a menu opens or a
   form reports an error, it is already there. The worst case becomes a style that
   arrives a moment late rather than a broken layout. You can switch it off for 
   a little more speed once you have tested a site, and the setting explains the
   trade.
 * **New: unused font alphabets are dropped (switched on).** A font stylesheet declares
   every alphabet a typeface supports — Latin, Cyrillic, Greek, Vietnamese and a
   large block of symbols — for every single weight. On an English site almost none
   of it can ever be used, yet the browser reads all of it before painting. One 
   family measured 102 KB on a client site; 61 KB of that was alphabets the page
   never writes in. Boost reads the characters actually on the page and keeps every
   alphabet they need. This does not change which font files are downloaded — browsers
   already fetch only what they need — it removes the reading work before the first
   paint.
 * **New: text stops jumping when your fonts load (switched on).** Text is drawn
   first in a standard font and redrawn in your real font once it arrives. The two
   are different heights, so at that moment every line changes size and everything
   below it shifts down the page. Google measures that shifting directly and it 
   is a quarter of the performance score. Boost now gives the stand-in font the 
   exact height of your real font so the swap moves nothing. The measurements come
   from the font files themselves rather than being estimated, and fonts Boost has
   no measurements for are left alone.
 * **New (optional, off by default): Lazy Render.** Lets the browser postpone drawing
   sections far down a long page until the visitor scrolls near them. The content
   is still fully present and still found by search engines and by Ctrl+F. It is
   off by default deliberately: to skip that work the browser has to seal each section
   off permanently, which clips anything designed to overhang its edges and re-anchors
   anything pinned to the screen. Overlapping sections and overhanging decoration
   are common in Elementor and Divi and Boost cannot tell from the page whether 
   your design relies on them. Sticky, popup, overlay and parallax sections are 
   skipped automatically. Switch it on, scroll the whole page on a phone and a desktop,
   and check nothing has been clipped or moved.

**If something looks wrong**

This is the first release of a new CSS engine. It was built and checked against 
real client pages, but every site is different. If anything looks off, switch **
Used CSS** off under File Optimization and clear the cache — the page returns to
exactly its previous behaviour immediately. Individual stylesheets can also be excluded
there without giving up the benefit elsewhere.

#### 1.3.9

**Mobile release: Combine CSS actually combines now, self-hosted fonts stop bloating
every page, and Boost tells you which optimizations you have left switched off**

 * **Fixed: “Combine CSS” was silently doing almost nothing.** WordPress adds a 
   version tag to nearly every stylesheet address (`style.css?ver=4.2.1`). Boost
   looked for a file with that version tag _in its name_, never found one, and quietly
   skipped the stylesheet — so on a normal site the combiner merged only the rare
   stylesheet that happened to carry no version, and everything else still loaded
   as its own render-blocking request. Measured on a live client site: Combine CSS
   switched on, and 44 of the page’s 47 stylesheets were still arriving individually.
   Combining now works as described. **Please re-test any site where you have Combine
   CSS enabled** — for the first time it will genuinely merge your stylesheets, 
   which is a large mobile win but also the change most likely to disturb a slider,
   form or menu. Check the site after updating and clear the cache; if anything 
   looks wrong, switch Combine CSS off. (Minification was never affected — only 
   combining.)
 * **Fixed: self-hosted Google Fonts were being embedded into every single page.**
   With “Self-Host Google Fonts” enabled, Boost pasted the entire localised font
   stylesheet directly into the page. On a real site that meant 138 KB of font CSS
   inside every HTML response — re-sent on every page view, stored in every cached
   page, and parsed before the page could paint. Localised font CSS is now written
   once to a cached, permanently-cacheable stylesheet and linked, so the browser
   downloads it a single time for the whole site. Small font stylesheets (under 
   8 KB) are still embedded, where doing so genuinely saves a request.

**Also in this release**

 * **New: the Mobile Score Advisor (Dashboard).** Boost’s biggest optimizations 
   ship switched off on purpose, because switching them on for you could break a
   site. The unintended result was that most installs quietly ran only the safest
   fraction of what the plugin can do — a fleet audit found every site slow on mobile
   for that reason alone, not because of any defect. The dashboard now reads this
   site’s own settings and states plainly which mobile levers are off and what each
   one costs, with a one-click button that switches on **only the safe-by-default
   ones** and clears the cache. File combining is deliberately never applied for
   you: it is the optimization most likely to disturb a slider, form or menu, so
   the advisor explains it and leaves the decision — and the testing — with you.
 * **New: Elementor stylesheet bundling (part of Elementor Speed).** Since Elementor
   3.24 each widget loads its own small stylesheet; a real page was measured carrying
   22 of them among 34 render-blocking stylesheets. Boost now merges neighbouring
   Elementor stylesheets into one fingerprinted file. Only Elementor’s own shipped
   files are merged — never your page CSS, your theme, or anything a builder generated—
   and any other stylesheet sitting between two of them ends the merge, so the styling
   order is bit-for-bit what it was. The bundle stays render-blocking (content is
   still styled before it paints), and the whole pass stands down automatically 
   if you enable the site-wide Combine CSS.
 * **New (opt-in): non-blocking Elementor fonts.** When Elementor hosts Google Fonts
   locally it writes every weight and style of a family into a single stylesheet—
   over 100 KB for one family is common — and the page cannot paint until it arrives.
   This option loads those stylesheets in the background instead. Elementor already
   displays text in a fallback font while webfonts load, so the final rendering 
   is unchanged; the page simply appears sooner. Off by default because the switch
   to the real font becomes more noticeable on slow connections.
 * **Improved: more Elementor page CSS is now inlined.** The per-file size limit
   for embedding Elementor’s per-page stylesheets was raised from 15 KB to 50 KB
   after measuring real sites, where the largest page stylesheets (25–40 KB) were
   exactly the ones being skipped — and therefore left as render-blocking requests.
   CSS compresses roughly six-to-one, so the added page weight is a few kilobytes
   in exchange for removing a round-trip.

#### 1.3.8

**Hotfix: video and iframe embeds render reliably again**

 * **Fixed YouTube/Vimeo embeds erroring in the editor and rendering empty on the
   site.** The “Disable Embeds” optimization (on by default) removed not just WordPress’s
   embed _assets_ but its embed _rendering_ machinery — the editor’s embed preview
   returned “Sorry, this content could not be embedded”, and a URL-based embed could
   resolve to nothing and then be frozen empty by the page cache. The toggle now
   does only its real job: stop serving wp-embed.min.js and this site’s embed-discovery
   links. Embed rendering can no longer be affected by it. If a page cached an empty
   embed, one Clear Cache repairs it.
 * **Changed: the click-to-play video facade is now opt-in (was on by default).**
   Replacing YouTube/Vimeo players with thumbnail facades is an aggressive optimization:
   it changes playback to two clicks, conflicts with builder video widgets, and 
   errors outright on sites whose security headers deny autoplay/encrypted-media.
   Sites that want it can enable “Video Facade” deliberately; its play-button icon(
   previously invisible due to a rendering bug) is also fixed.
 * **Fixed autoplaying hero/background videos being demoted to `preload="none"`.**
   An autoplay video must start buffering immediately — its poster is usually the
   page’s LCP. Only passive click-to-play videos are now demoted.

#### 1.3.7

**Elementor Speed (opt-in), a redesigned Light/Dark admin, the Fleet Ops read-only
API, and an HTML-freshness correctness fix**

 * **New: Elementor Speed — Boost finally optimizes Elementor instead of only protecting
   it (opt-in).** Most Elementor sites carry the same invisible weight: 4–27 tiny
   render-blocking `post-*.css` requests per page, an always-loaded `eicons` icon
   stylesheet, and Font Awesome shims. The new module (File Optimization  Elementor
   Speed, master toggle **off** until you enable it) inlines each page’s own Elementor
   CSS straight into the HTML (identical rules, same position, minus every one of
   those blocking requests), drops the eicons/Font Awesome stylesheets only on pages
   that provably use no icons, lightboxes, popups or carousels (any doubt = the 
   sheet stays), and adds a read-only advisor that flags Elementor settings worth
   changing (font-display swap, Inline Font Icons, Element Caching alongside a page
   cache). Elementor’s own JavaScript and init order are never touched — that is
   exactly what historically breaks sliders and forms — and the advisor also warns
   on oversized DOM (Boost will never restructure your markup; the fix belongs in
   the builder).
 * **New: the Boost admin now has true Light and Dark modes.** Appearance  Interface
   Mode switches the whole panel — every card, dropdown, text field and toggle re-
   themes with full contrast in both modes, previewing instantly. Typography is 
   refreshed with a premium display face (Space Grotesk) over Inter. The bright 
   Goop WebGL backdrop is retired (existing installs migrate to Dark automatically);
   the Classic particles and all six ambient video backdrops remain as optional 
   dark-mode extras. Your four accent colours now adapt automatically so text stays
   readable on light surfaces whatever colours you pick.
 * **Preview: Fleet Ops (BaseCloud CRM) — visible on the Advanced screen, marked“
   Unavailable Right Now”.** The plugin side of BaseCloud’s central monitoring (
   a read-only `bcboost/v1` REST API with a revocable, encrypted pairing key and
   optional signed requests) ships in this release but stays fully dormant — the
   API does not register and there is nothing to configure — until the BaseCloud
   service goes live in a future update.
 * **Fixed stale HTML on hosts with an edge cache when “Browser Cache Headers” was
   off.** That toggle previously gated _all_ Cache-Control output — with it off,
   HTML went out with no Cache-Control at all, so browsers heuristic-cached pages
   that no server-side purge could ever reach (found live on an Oxygen/Varnish site).
   HTML freshness headers (`max-age=0, must-revalidate`, plus logged-in no-store
   protection) are now sent unconditionally — the toggle only gates the static-asset
   caching rules, as it always should have.
 * **Improved: async-CSS protection patterns can now be precise.** Exclusion entries
   accept `regex:` patterns alongside substrings, so Oxygen’s numeric per-page stylesheets
   are protected exactly — while its site-wide sheets stay eligible for minify/combine/
   async. An invalid pattern fails closed (the stylesheet stays render-blocking)
   and is logged: a typo can slow a page, never break one.
 * **Improved: cross-origin video-background heroes get a preconnect.** Hero videos
   streamed from a different origin (Azure blob, S3, video CDN) now have their connection
   warmed before the first byte is requested, the same treatment image heroes already
   get.
 * **Improved: GZIP compression rules are always written to .htaccess** — compression
   is a correctness-neutral win and no longer depends on the browser-cache toggle.

#### 1.3.6

**New: a built-in Critical CSS generator (Beta, opt-in) — the key that unlocks async
CSS**

 * **Boost can now create critical CSS itself — no Node, no headless Chrome, no 
   external service.** The number-one thing holding back mobile scores on most sites
   is a wall of render-blocking stylesheets, and the cure (inlining the above-the-
   fold “critical” CSS, then loading the rest asynchronously) previously required
   generating that CSS with external tooling. The new built-in generator does it
   in pure PHP on your own server: it reads each template’s page, determines which
   stylesheet rules the above-the-fold content actually uses, and fills the Per-
   Template Critical CSS store at the press of a button.
 * **You choose — nothing turns itself on.** The generator ships **off**; enable
   it under Advanced  Critical CSS (“Built-In Critical CSS Generator (Beta)”), press
   _Generate for all templates_, and review the results per template. Inlining (
   Enable Critical CSS) and Async CSS (File Optimization) remain separate switches
   you flip yourself, and the long-standing safety gate is unchanged: any page without
   critical-CSS coverage automatically keeps safe render-blocking CSS — a page can
   never paint unstyled because coverage was missing.
 * **New: six ambient video backdrops for the Boost admin.** The Appearance screen
   now offers looping video themes — Boost Rocket, Goop Motion, Lava Lamp, Colours,
   Fish Tank, and Zombies — behind the glass UI, alongside the Goop, Classic, and
   Minimal engines. Hover a card to preview its motion before choosing. Heavily 
   compressed (all six together add ~4 MB to the plugin, sources were 140 MB), admin-
   only (never loaded on your website), paused in hidden tabs, and reduced-motion
   users get a still frame.
 * **Improved: smarter preconnects.** Boost no longer preconnects to a fixed list
   of third-party origins on every page — it now checks which origins the page actually
   references (Tag Manager, Analytics, Google Fonts…) and hints only those, capped
   at the browser’s useful budget of four. Unused preconnects were burning TLS handshakes
   inside the critical first-paint window and drawing Lighthouse’s “preconnect not
   used” warning.
 * **Improved: one hero per page — competing image priorities are demoted.** When
   the detected hero is a background, slider, or video-poster image, WordPress core(
   or the theme) may still have marked a different content image `fetchpriority="
   high"` — two “highest priority” images then fight for the same critical bandwidth
   and both paint later. Boost now removes the competing marker (returning those
   images to normal browser priority, never forcing them low) so the real hero wins
   the connection.
 * **Improved: the cache preloader now warms the mobile variant too.** With “Separate
   mobile cache” enabled, the preloader previously warmed only the desktop copy 
   of each page — phone visitors (and Google’s mobile speed test) always hit a cold
   cache first. Every warmed URL is now fetched with a desktop and a mobile browser
   identity, so both variants are hot.
 * **Built defensively.** Same-origin stylesheets are read from disk only (never
   fetched over the network), with strict file-count and size caps; generated output
   is size-capped, sanitized like every other critical-CSS source, and ambiguous
   selectors resolve toward keeping a rule (worst case a few extra bytes — never
   missing styles). A configured remote generation-service endpoint still takes 
   precedence when you have one, and existing manual/CLI workflows are untouched.
   Regenerate any time from the same button — e.g. after the “may be stale” banner
   appears following a theme or builder change.

#### 1.3.5

**Mobile speed release: the hero image starts downloading sooner, above-the-fold
images are never lazy-loaded, lazy images download at their true rendered size, 
and icon fonts no longer flash placeholder glyphs**

 * **New: automatic preconnect to the hero image’s origin and your CDN.** The browser
   now opens the network connection (DNS + TCP + TLS) to the CDN and to whichever
   origin serves the page’s hero image _before_ it is asked to download it, saving
   a full round-trip on high-latency mobile connections — the hero starts downloading
   sooner, directly improving Largest Contentful Paint (LCP). A safe, standards-
   based resource hint (https, cross-origin only, never duplicated); toggle under
   Media  “Auto-Preconnect Hero & CDN Origin”.
 * **New: leading above-the-fold images are kept eager.** On phones the first screen
   usually holds 2–3 images, and lazy-loading them delays first paint (PageSpeed’s“
   LCP image was lazy-loaded” flag). The hero plus the next above-the-fold image
   now always load immediately; the count is tunable under Media  “Above-the-Fold
   Images Kept Eager”. Below-the-fold images are additionally hinted `fetchpriority
   ="low"` so the hero keeps the bandwidth.
 * **New: lazy images download at their true rendered size.** Every lazy-loaded 
   responsive image now carries `sizes="auto"` (the WordPress 6.7 core mechanism,
   applied by Boost on older WordPress and page-builder markup too): supporting 
   browsers pick the image variant that matches how large the image actually renders
   instead of a viewport-width guess — on phones this substantially cuts image bytes
   and fixes the PageSpeed “Properly size images” flag. Older browsers simply ignore
   it. Toggle under Media  “Right-Size Lazy Images”.
 * **Fixed icon fonts flashing a wrong character or placeholder box while loading.**
   The font-display optimisation applied `swap` to _every_ font, including icon 
   fonts (Font Awesome, Dashicons, Divi/Elementor icon packs, WooCommerce stars)—
   during the swap window the fallback font would paint a meaningless letter or 
   tofu box where each icon belongs, most visibly on slow mobile connections. Icon
   fonts are now detected (by name and by their private-use-area unicode-range) 
   and get `block` — briefly invisible, then the correct icon — while text fonts
   keep `swap` so real copy is never invisible. Detection matches font family names
   and file names only, never directory paths, so a text font that merely lives 
   in a theme or plugin folder with an icon-like name is untouched.
 * **Improved: more third-party scripts can be safely delayed.** The curated delay
   list (analytics, heatmaps, chat widgets, ad pixels that never render page content)
   now also covers Zopim/Zendesk Chat, Tidio, Smartsupp, Chatra, Olark, Zoho SalesIQ,
   Freshchat, Userlike, Clicky, Crazy Egg, Lucky Orange, Inspectlet, Smartlook, 
   Heap, Fathom, Simple Analytics, Matomo Cloud, Criteo, Outbrain, Reddit Ads, and
   Quora Ads. Vendors whose scripts can render visible page content (Freshworks 
   CDN, affiliate attribution tags) were deliberately reviewed and excluded.
 * **Improved: hero detection now reads Elementor’s external page CSS.** When Elementor
   stores a page’s styles as an external file (its default mode), a section’s background
   hero lives in `uploads/elementor/css/post-*.css` where detection previously could
   not see it — those pages silently got no hero preload. The detector now reads
   just those local files (never a network fetch, tightly capped) so external-file
   Elementor heroes are preloaded like everyone else’s. Sections with different 
   desktop/mobile backgrounds are still deliberately skipped rather than guessed.
 * **Changed: image serving is now WebP-only by default — AVIF becomes a deliberate
   opt-in.** AVIF produced broken or blank images on servers whose encoder emits
   files it cannot verify (even with 1.3.4’s validation, hosts without an AVIF decoder
   can’t prove their output), while WebP delivers nearly the same savings with rock-
   solid reliability. Existing installs are switched to WebP-only once on upgrade(
   a dismissible notice explains this); your original images and any existing .avif
   files are untouched, and re-enabling AVIF under Media settings afterwards is 
   respected forever.
 * **New: WebM video served automatically when a copy exists.** Boost never converts
   video on your server (PHP can’t, and re-encoding would be slow and lossy) — but
   when you place a .webm copy next to a self-hosted .mp4, Boost now injects it 
   as the preferred source so supporting browsers stream the much smaller WebM while
   everyone else keeps the MP4. Same trusted sibling pattern as WebP images; CDN
   rewriting applies to the WebM URL like any other asset.
 * **New: hero background videos get their poster preloaded.** On pages whose hero
   is a self-hosted video, the video frames can never paint first — the poster image
   is what visitors actually see, making it the true Largest Contentful Paint element.
   Hero detection now recognises an above-the-fold video’s poster and preloads it
   with high priority. (No poster set? Add one — it is the single biggest LCP fix
   for video headers; a tip in Media settings explains this.)
 * **New: Appearance settings — make Boost yours.** A new Appearance screen lets
   you pick the admin backdrop — **Goop** (the new lava-lamp: rocket-fuel plasma
   rising through deep space, a self-contained 6 KB WebGL shader replacing the previous
   600 KB animation library), **Classic** (the original drifting particles), or **
   Minimal** (static gradient) — and re-tint the entire admin from four accent colour
   pickers, with instant live preview as you choose. Purely cosmetic: nothing on
   this screen affects your website or its speed. The goop backdrop pauses in hidden
   tabs, respects reduced-motion preferences, survives GPU resets, and falls back
   to the gradient wherever WebGL is unavailable.

#### 1.3.4

**Corrupt WebP/AVIF conversions can no longer be served: conversions are now written
atomically and fully verified before use, and a new repair command fixes existing
broken files**

 * **Fixed a corrupted WebP/AVIF conversion being served as a broken or blank image.**
   A conversion whose write was interrupted (e.g. a killed server process) or that
   a faulty server encoder produced could pass Boost’s checks — its file header 
   and pixel dimensions looked valid — and be served in place of the original, rendering
   as a broken/blank image in the browser. Conversions are now written atomically(
   a partially-written file can never land at the servable location) and must fully
   decode before they are ever used — verified with an independent image engine 
   where the server has one, so the encoder is never the only judge of its own output.
   At serve time, files are additionally checked for structural truncation (declared
   size vs. actual bytes); anything that can’t be validated is never served — the
   original image is always used instead, and a `WP_DEBUG_LOG` entry names the offending
   file once.
 * **AVIF conversion is now skipped on servers that can’t verify their own AVIF 
   output.** If the server has no AVIF decoder to validate with, Boost no longer
   produces AVIF files it cannot check (WebP is unaffected); a `WP_DEBUG_LOG` entry
   explains this once.
 * **New: `wp bcboost verify-conversions` repairs existing conversions.** The WP-
   CLI command scans every existing WebP/AVIF conversion, reports corrupt ones, 
   and with `--delete-broken --regenerate` removes and rebuilds them (batchable 
   via `--batch`). It also cleans up any orphaned temporary files. Safe everywhere:
   separately-uploaded files that merely share a name with an original (the 1.3.2
   protection) and animated WebP files are never touched — but Boost’s _own_ conversions
   that turn out broken are now regenerated instead of being skipped forever.

#### 1.3.3

**Hero-image detection targets the right image: 4-digit-width images lazy-load again,
theme background bands are no longer preloaded, and detection now reads inline styles**

 * **Fixed images with 4-digit widths (e.g. `width="1000"`) being wrongly treated
   as tracking pixels.** The tracking-pixel check matched any width/height _starting_
   with `1`, so full-size content images with widths like 1000 or 1200 were silently
   excluded from lazy-loading _and_ from hero (LCP) prioritisation. These images
   now lazy-load normally and are eligible to be the preloaded hero again; only 
   genuine 1×1 pixels remain exempt.
 * **Fixed the hero preload targeting the wrong image on some themes.** Detection
   could latch onto a theme background band declared via a CSS custom property (
   e.g. Avada’s `--awb-background-image`) or onto a small thumbnail instead of the
   real hero. Custom-property declarations are no longer mistaken for inline backgrounds,
   thumbnails and other insignificant images (logos, icons, `thumb`-named files)
   are vetoed, and affected pages self-correct on the next cache clear.
 * **Improved: hero detection now also reads the page’s own inline `<style>` blocks**(
   Elementor-embedded CSS and Critical CSS) to find section background heroes — 
   it never fetches external stylesheets to do so. It also skips images hidden on
   mobile (e.g. `elementor-hidden-mobile` wrappers), and when it cannot confidently
   identify the hero it now emits nothing rather than guessing — a per-page `bcboost_lcp_image`
   custom field remains available as the manual override (a `WP_DEBUG_LOG` hint 
   names it when detection stands down).

#### 1.3.2

**Hotfix: WebP/AVIF serving no longer picks up unrelated same-name files, and hidden
images are no longer treated as the hero**

 * **Fixed WebP/AVIF serving displaying the wrong image when a separately-uploaded
   file shared a filename with an image Boost optimized.** If your Media Library
   contained both `photo.jpg` and an unrelated `photo.webp` that you uploaded yourself,
   Boost’s modern-format serving assumed the `.webp` was its own conversion of the`.
   jpg` and served it in its place — showing a completely different (or distorted)
   image on the page. Boost now verifies that a `.webp`/`.avif` sibling really is
   a conversion of the original — its pixel dimensions must match the original exactly—
   before ever serving it; anything that doesn’t match is left alone and the original
   image is served (behaviour tunable via the `BCBOOST_verify_modern_conversion`
   filter). Bulk image compression likewise now recognises such separately-uploaded
   files and will never overwrite or count them as its own conversions. No action
   needed: affected pages self-correct on the next cache clear, and none of your
   files were modified.
 * **Hero-image detection now ignores images inside hidden containers and inactive
   tab panels.** Images inside `aria-hidden`/`hidden`/`display:none` containers 
   or non-active tab panels are no longer promoted or preloaded as the page’s LCP
   hero, so the _visible_ hero gets the priority treatment.

#### 1.3.1

**Hotfix: settings saves no longer appear to “not stick” on Redis / persistent-object-
cache hosts**

 * **Fixed settings toggles appearing not to save on hosts with a persistent object
   cache (e.g. Redis on Cloudways).** Saving a setting while the 1.3.0 cache preloader
   was running could look like the save was ignored: the value _was_ stored correctly
   in the database, but a WordPress object-cache race (trac #31245) let a concurrent
   request write an older copy of the autoloaded-options blob back over it, so the
   settings page — and the plugin — kept reading the old value. Boost’s settings
   now live outside the shared autoloaded options blob (so the race can never touch
   them again), every settings write goes through a single hardened path that refreshes
   the object cache immediately, and the settings page always redisplays values 
   fresh from the database after a save. **No settings were ever lost**, and no 
   action is needed: the fix repairs itself on the first wp-admin page load after
   updating — any toggles that looked “lost” reappear with their saved values.

**Fresh content guaranteed after every cache clear, full Divi support, a real LCP
optimizer, per-template Critical CSS, and a cache preloader that re-warms your whole
site**

 * **Fixed “my visitors still see the old site even after I cleared the cache”.**
   Boost told browsers to keep every CSS/JS file for a year without re-checking (`
   immutable`), while the _Remove Query Strings_ option stripped …

## Meta

 *  Version **1.4.1**
 *  Last updated **ཆུ་ཚོད 7། ago**
 *  Active installations **40+**
 *  WordPress version ** 5.5 or higher **
 *  Tested up to **6.9.7**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/basecloud-boost/)
 * Tags
 * [cache](https://dzo.wordpress.org/plugins/tags/cache/)[caching](https://dzo.wordpress.org/plugins/tags/caching/)
   [optimization](https://dzo.wordpress.org/plugins/tags/optimization/)[performance](https://dzo.wordpress.org/plugins/tags/performance/)
   [speed](https://dzo.wordpress.org/plugins/tags/speed/)
 *  [Advanced View](https://dzo.wordpress.org/plugins/basecloud-boost/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/basecloud-boost/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/basecloud-boost/reviews/)

## Contributors

 *   [ BaseCloud ](https://profiles.wordpress.org/basecloud/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/basecloud-boost/)