Fixed: a caching plugin that is installed but has its page caching switched off (for example WP-Optimize used only for database cleanup or image compression) is no longer treated as an active page cache. The “… is active, so page caching headers are left to it” note and the “Also clear the page cache” option now appear only when page caching is really enabled, and the “Pages (HTML)” option works in that situation instead of silently stepping aside. The check mirrors each supported plugin’s own on/off state and safely falls back to the previous behavior when that state can’t be read. Props @jcollier for the report.
3.2.0
New: “Let browsers keep static files for a year” (opt-in, in the new “Speed up” settings section) — serves CSS, JS, fonts and images with long-lived Cache-Control/Expires headers. Safe by design: versioned URLs change whenever a file changes, so visitors still get updates immediately. Fixes the Lighthouse audit “Serve static assets with an efficient cache policy”. On Apache/LiteSpeed the rules are written through WordPress’s own .htaccess API and removed again when the option is turned off or the plugin is deactivated/deleted; on nginx and multisite the settings page shows a ready-to-copy snippet instead.
New: the plugin verifies the long-caching headers by fetching one of the site’s own CSS files and shows the result on the settings page — so you know whether your server actually applied the rules (some hosts lack the needed Apache modules; the plugin tells you instead of silently assuming).
New: “Refresh versions automatically after plugin, theme or WordPress updates” (opt-in) — covers manual, bulk and automatic background updates, and clears the page cache when that option is on. Uses the least invalidation your mode allows: in the recommended automatic mode file versions already update by themselves, so only the page cache is cleared. Image versions are never touched by this feature.
New: a one-time “what’s new” note after upgrading, shown only on the plugin’s own settings page (dismissible; nothing is added anywhere else in wp-admin).
New for developers: the pbc_cache_policy_rules filter, the pbc_after_auto_bump action, and the PBC_DISABLE_HTACCESS_WRITE constant (force snippet-only mode, no file writes).
wp pbc status and the status ability now also report the cache-policy state (including the verification result) and the auto-refresh setting.
Fixed: a valueless “ver” query parameter no longer turns into “ver=.123” after a version update.
3.1.0
New: “Update versions” can now also clear the page cache when one of the supported caching plugins is active — WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache, WP-Optimize, Breeze, Cache Enabler, Hummingbird, SiteGround Optimizer, Swift Performance, Comet Cache. Fixes “I updated the versions, but visitors still got the old design from the page cache”. Opt-in: a settings checkbox turns it on (off by default — another plugin’s cache is only touched when you say so). Each plugin is purged through its own public API; every call is guarded, and the version update always completes even if a purge fails.
New: after every “Update versions” click the plugin reports what happened — which asset types got new versions (per your settings) and whether the detected page cache was cleared. The report shows inline on the settings page and as a one-time notice after using the toolbar button.
New: WP-CLI support — wp pbc update [–skip-purge] and wp pbc status [–format=table|json|yaml].
New: on WordPress 6.9+ the plugin registers two Abilities for AI agents and automation, prevent-browser-caching/bump-versions and prevent-browser-caching/status (Abilities API / REST / MCP adapter; require the manage_options capability).
New for developers: the pbc_purge_page_cache filter (veto the purge) and the pbc_after_bump action (observe every version update and its purge outcome).
Fixed: image URLs inside RSS feeds no longer get a “ver” parameter.
Fixed: an existing “ver” query parameter in image URLs is now detected precisely — a “ver=” fragment inside another parameter name no longer counts as one.
Housekeeping: uninstall on multisite now cleans up networks with more than 100 sites.
3.0.0
New automatic mode (now the recommended default): the assets version is taken from the file modification time, so browser caching works at full strength and busts exactly when a file changes.
External URLs (payment scripts, CDNs) are no longer versioned by default — this used to break PayPal/Braintree/Authorize.net checkouts. A checkbox brings external versioning back; sites upgrading with saved settings keep their previous behavior until they switch.
New: image cache busting. Attachment URLs are versioned; editing or replacing a media file busts its cache.
New: HTML page freshness — optional Cache-Control header asking browsers to revalidate pages, plus a back/forward-cache guard for stale pages on mobile. Steps aside automatically when a page-cache plugin is detected.
New: exclusions list (URL substrings or script/style handles) and pbc_skip_src / pbc_assets_version filters for developers.
New: optional cache busting in the admin area.
New settings screen: a few clear switches, details unfold when you need them. Sites upgrading from 2.x get a one-click “Enable recommended settings” banner (reversible).
The toolbar button is now called “Update versions”: it updates the versions of CSS/JS files and images.
After activation the plugin opens its settings page.
Full backward compatibility: the prevent_browser_caching() function, all 2.x options and the filter timing work exactly as before.
Recommended for developers: use the pbc_assets_version filter instead of the prevent_browser_caching() function — unlike a bare function call, it never causes a fatal error if the plugin is deactivated.
Fixed: PHP warning “Cannot modify header information” when another plugin printed output before the cookie was set.
Fixed: the manual update button on the settings page submitted the whole form.
Housekeeping: uninstall now removes all plugin options (multisite-aware); all strings are translatable; added a POT file; direct-access guards on all files.
Raised the minimum PHP version to 7.2 (matches the WordPress minimum). Tested on PHP up to 8.5.
2.3.7
Fixed a bug with URLs that contain repeated query params: only the last one survived after adding the “ver” param. For example, Google Fonts URLs with several “family” params lost all font families except the last one.
Tested the plugin in WordPress 7.0.
Declared the minimum required PHP version (5.6).
2.3.6
Tested the plugin in WordPress 6.9.
2.3.5
Tested the plugin in WordPress 6.5.
2.3.4
Tested the plugin in WordPress 6.1.
2.3.3
Tested the plugin in WordPress 6.0.
2.3.2
Fixed “Update CSS/JS” button in the admin bar.
2.3.1
Tested the plugin in WordPress 5.1.
2.3
Tested the plugin in WordPress 5.0-beta1 and optimized the code.
2.2
Added function “prevent_browser_caching” which disables all admin settings of this plugin and allows to set the new settings.
Changing “ver” param instead of adding additional “time” param.
2.1
Added option to show “Update CSS/JS” button on the toolbar.
2.0
Added setting page to the admin panel.
Added automatically updating CSS and JS files every period for individual user
Added manually updating CSS and JS files for all site visitors