Prevent Browser Caching

Descripció

Heu canviat el lloc web, però un client o visitant continua veient la versió antiga i heu de dir «si us plau, buideu la memòria cau del navegador»? Aquesta extensió fa innecessària aquella conversa.

El Prevent Browser Caching s’assegura que els navegadors carreguin sempre la versió actual del vostre lloc web, sense desactivar la memòria cau del navegador ni alentir el lloc web.

Què fa

  • Versions del CSS i el JS. El WordPress carrega els recursos amb un paràmetre «ver» a l’URL (per exemple, style.css?ver=4.9.6). Els navegadors conserven el fitxer a la memòria cau fins que aquest paràmetre canvia. En el mode automàtic recomanat l’extensió estableix la versió a partir de la data de modificació del fitxer mateix: la memòria cau del navegador funciona a ple rendiment, i en el moment que actualitzeu un fitxer tots els visitants reben el nou.
  • Versions de les imatges. Quan editeu o reemplaceu un fitxer de la Mediateca, els visitants reben la imatge nova en lloc de la de la memòria cau.
  • Frescor de les pàgines HTML. Demana als navegadors que comprovin si hi ha una versió més nova d’una pàgina abans de mostrar-ne una còpia de la memòria cau: resol el «al mòbil encara veig la pàgina antiga».
  • Actualització amb un clic. El botó «Actualitza les versions» de la barra d’eines obliga tots els visitants a obtenir còpies noves de tots els recursos, i mostra un informe breu de què ha passat exactament.
  • La memòria cau de pàgines es manté sincronitzada (opcional). Si hi ha una extensió de memòria cau de pàgines activa, actualitzar les versions també pot buidar la seva memòria cau, de manera que l’HTML de la memòria cau deixa de fer referència a les versions antigues dels fitxers i tots els visitants veuen el lloc web nou immediatament. Una casella ho activa, i després de cada actualització l’extensió informa de què s’ha actualitzat i què ha passat amb la memòria cau de pàgines. Funciona amb WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache, WP-Optimize, Breeze, Cache Enabler, Hummingbird, SiteGround Optimizer, Swift Performance i Comet Cache.
  • Visites repetides més ràpides (opcional, novetat a la 3.2). Com que el versionatge garanteix l’actualitat, l’extensió pot servir amb seguretat els vostres fitxers estàtics amb capçaleres de memòria cau del navegador d’un any, la solució exacta per a l’auditoria del Lighthouse «Serve static assets with an efficient cache policy». Escriu les regles mitjançant l’API pròpia de .htaccess del WordPress a l’Apache/LiteSpeed (s’eliminen de nou en desactivar-la), mostra un fragment llest per copiar per a l’nginx, i després obté realment un dels vostres fitxers CSS per verificar que les capçaleres funcionen de veritat; el resultat es mostra a la pàgina de configuració.
  • Actualització automàtica després de les actualitzacions (opcional, novetat a la 3.2). Les actualitzacions d’extensions, temes i del WordPress canvien els fitxers CSS i JS. Amb aquesta opció, cada actualització (incloses les actualitzacions automàtiques en segon pla) va seguida d’una actualització de versions (i d’un buidatge de la memòria cau de pàgines quan aquesta opció està activada), així els visitants no veuen mai un disseny trencat després d’una actualització.
  • CLI i agents d’IA. Les ordres del WP-CLI (wp pbc update, wp pbc status) i les habilitats del WordPress permeten que els scripts de desplegament i els agents d’IA actualitzin les versions amb seguretat.

Segur per defecte

  • Els URL externs (scripts de pagament, CDN, serveis de tercers) es deixen intactes: alguns es trenquen quan se’ls afegeix un paràmetre «ver» inesperat. Podeu tornar a activar el versionatge extern amb una casella.
  • Es poden excloure del versionatge fitxers concrets (per una part de l’URL) o identificadors d’script o estil, tant CSS i JS com imatges.
  • Si hi ha una extensió de memòria cau de pàgines activa, les capçaleres d’actualitat de l’HTML es fan enrere automàticament.
  • La memòria cau de pàgines d’una altra extensió no es buida mai si no ho activeu vosaltres: la integració de buidatge en actualitzar és opcional, i l’informe posterior a cada actualització us diu si la memòria cau de pàgines s’ha buidat o s’ha deixat intacta.
  • Les capçaleres de memòria cau prolongada també són opcionals, i només estan disponibles mentre el versionatge de CSS/JS està activat: l’extensió no deixa mai que els navegadors conservin fitxers durant un any sense una manera d’invalidar-los. Si desactiveu l’opció (o desactiveu l’extensió) les regles s’eliminen completament.

Modes d’actualització

  • Automàticament, quan un fitxer canvia (recomanat): versió = data de modificació del fitxer. Zero clics, memòria cau completa.
  • A cada càrrega de pàgina: mode de desenvolupament, el CSS i el JS no es desen mai a la memòria cau (les imatges i les pàgines no es veuen afectades). Utilitzeu-lo només mentre desenvolupeu activament.
  • Manualment: les versions canvien només quan feu clic al botó «Actualitza les versions».

Per a desenvolupadors

La manera recomanada d’establir la versió del CSS/JS des del codi és el filtre pbc_assets_version. Afegiu això al fitxer functions.php del vostre tema i canvieu el valor sempre que necessiteu actualitzar els recursos:

add_filter( 'pbc_assets_version', function( $ver ) {
    return '123';
} );

Com que utilitza l’add_filter() propi del WordPress, continua funcionant amb seguretat encara que algun dia es desactivi l’extensió: el vostre lloc web no es trencarà.

Filtres per a l’ajust fi:

  • pbc_skip_src( $skip, $src, $handle ): retorneu true per deixar intacte l’URL d’un recurs concret.
  • pbc_assets_version( $ver, $src, $handle ): canvia la versió aplicada a un recurs concret.
  • pbc_purge_page_cache( $purge, $plugin_name ): retorneu false per evitar el buidatge de la memòria cau de pàgines en les actualitzacions de versions.
  • pbc_after_bump( $result ): acció que s’executa després de cada actualització de versions, amb la marca de temps nova i el resultat del buidatge.
  • pbc_cache_policy_rules( $rules, $options ): canvia les regles de memòria cau prolongada generades abans que s’escriguin al .htaccess (o es mostrin com a fragment).
  • pbc_after_auto_bump( $context ): acció que s’executa després d’una actualització automàtica de versions posterior a una actualització, amb el tipus d’actualització i el resultat del buidatge.
  • PBC_DISABLE_HTACCESS_WRITE: definiu aquesta constant com true (per exemple, a wp-config.php) i l’extensió no escriurà mai al .htaccess ella mateixa; en lloc d’això la pàgina de configuració mostra les regles per a la configuració manual.

WP-CLI

  • wp pbc update: actualitza les versions (i buida la memòria cau de pàgines detectada quan l’opció de la configuració està activada). Afegiu --skip-purge per no tocar la memòria cau de pàgines en aquella execució.
  • wp pbc status: mostra el mode, què es versiona, l’última actualització manual i l’extensió de memòria cau de pàgines detectada. Admet --format=table|json|yaml.

Habilitats (agents d’IA i automatització)

Al WordPress 6.9+ l’extensió registra dues habilitats, localitzables mitjançant l’API d’habilitats, la REST i l’adaptador MCP, així els agents d’IA i les eines de gestió de llocs web poden fer servir l’extensió sense codi d’unió personalitzat:

  • prevent-browser-caching/bump-versions: actualitza les versions; entrada booleana opcional purge (poseu-la a false per ometre el buidatge de la memòria cau de pàgines).
  • prevent-browser-caching/status: informe només de lectura de la configuració actual.

Totes dues requereixen la capacitat manage_options.

Antic: les versions anteriors documentaven una funció prevent_browser_caching() en lloc d’això. Continua funcionant exactament com abans (desactiva la configuració d’administració de l’extensió i us dóna control total), però recomano el filtre de dalt: una crida a una funció sense protecció al functions.php provoca un error fatal si mai es desactiva l’extensió. Si continueu utilitzant la funció, protegiu-la:

if ( function_exists( 'prevent_browser_caching' ) ) {
    prevent_browser_caching( array(
        'assets_version' => '123'
    ) );
}

Gràcies

Moltes de les millores recents van començar com a informes i preguntes al fòrum de suport: gràcies a tothom qui ha dedicat temps a descriure un problema o a compartir una idea. Si alguna cosa no funciona com esperàveu al vostre lloc web, obriu-hi un tema: ajuda de veritat a fer una extensió millor per a tothom.

Captures

Instal·lació

Des del tauler del WordPress

  1. Visiteu «Extensions > Afegeix una extensió».
  2. Cerqueu «Prevent Browser Caching».
  3. Instal·leu i activeu l’extensió Prevent Browser Caching.

Des del lloc web WordPress.org

  1. Baixeu l’extensió Prevent Browser Caching.
  2. Pugeu la carpeta «prevent-browser-caching» al vostre directori «/wp-content/plugins/».
  3. Activeu el Prevent Browser Caching a la vostra pàgina d’extensions.

PMF

Afecta la velocitat del lloc web o el SEO?

Només pot ajudar. En el mode automàtic recomanat la memòria cau del navegador continua funcionant a ple rendiment: els visitants recurrents carreguen el CSS/JS des de la seva memòria cau fins que un fitxer canvia realment, així que les visites repetides són tan ràpides com sempre (més ràpides que el comportament antic per defecte de la 2.x, que tornava a baixar els recursos a cada visita). I l’opció opcional «Accelera» va més enllà: capçaleres de memòria cau d’un any per als vostres fitxers estàtics, la solució exacta per a l’auditoria «efficient cache policy» del Lighthouse. El cost per al servidor són unes poques consultes de la data del fitxer per pàgina: insignificant. El paràmetre «ver» de l’URL és el mateix mecanisme que utilitza el nucli del WordPress, els motors de cerca hi estan perfectament acostumats, i l’extensió no canvia el contingut de les vostres pàgines, ni el marcatge, ni els URL que veuen els rastrejadors.

Funciona conjuntament amb les extensions de memòria cau de pàgines?

Sí, i des de la 3.1.0 poden cooperar activament. Les URL de recursos versionades acaben a l’HTML de la memòria cau com qualsevol altra, així que servir HTML obsolet abans volia dir servir-hi també versions antigues dels recursos. Quan la casella «Buida també la memòria cau de pàgines» de la pàgina de configuració està activada, fer clic a «Actualitza les versions» (barra d’eines, pàgina de configuració, WP-CLI o una habilitat) també buida la memòria cau de l’extensió de memòria cau de pàgines detectada, de manera que aquell HTML es regenera amb les versions noves. Compatibles: 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. La casella està desactivada per defecte: la memòria cau d’una altra extensió només es toca quan ho dieu vosaltres (per exemple, si la vostra memòria cau de pàgines serveix només visitants no connectats, potser preferiu no reconstruir-la a cada actualització). En tot cas, l’informe que es mostra després de cada actualització diu si la memòria cau de pàgines s’ha buidat, i l’actualització de versions sempre es completa encara que un buidatge falli. L’extensió també continua deixant les capçaleres de memòria cau de l’HTML a l’extensió de memòria cau de pàgines.

Funciona amb els constructors de pàgines (Elementor, Divi, Beaver Builder…)?

Sí. Els constructors generen el seu CSS com a fitxers reals (normalment a la carpeta uploads) i els donen una versió nova basada en el temps cada vegada que els regeneren; l’Elementor, per exemple, serveix el CSS de cada pàgina com post-123.css?ver=<generation time>, i aquesta versió canvia cada vegada que es reescriu el fitxer. A més, en el mode automàtic aquesta extensió afegeix el seu propi component de versió a partir de la data de modificació del fitxer, així que fins i tot un fitxer de constructor reescrit al mateix lloc invalida la seva memòria cau immediatament. En conjunt, això fa que l’opció de memòria cau prolongada sigui segura també per als fitxers dels constructors: les seves URL canvien sempre que canvia el seu contingut.

Funciona amb les extensions de minificació (Autoptimize, WP-Optimize)?

Sí, verificat amb tots dos. Els minificadors inclouen un hash del contingut i les dates de modificació dels fitxers d’origen en els noms dels fitxers que generen, així que aquells fitxers invaliden la seva pròpia memòria cau pel nom, i l’opció de memòria cau prolongada d’aquí és justament la política adequada per a ells: el CSS/JS minificat del WP-Optimize rep les capçaleres d’un any i canvia d’URL sempre que canvia un fitxer d’origen, mentre que l’Autoptimize serveix la seva carpeta de memòria cau amb la seva pròpia política equivalent d’un any «immutable», així que no entren mai en conflicte. Els fitxers que el minificador deixa intactes conserven el paràmetre «ver» d’aquesta extensió, fins i tot quan l’opció «elimina les cadenes de consulta» del minificador està activada (aquesta extensió afegeix la seva versió després d’elles a propòsit).

El mode automàtic buida la meva memòria cau de pàgines quan un fitxer canvia?

No, i és intencionat, no un descuit. En el mode automàtic la versió prové de la data de modificació del fitxer, llegida en el moment en què es genera una pàgina; no «passa» res al servidor quan pugeu un fitxer modificat, així que no hi ha cap esdeveniment amb què buidar la memòria cau de pàgines. L’HTML de la memòria cau conserva les versions antigues dels recursos fins que la memòria cau de pàgines caduca o es buida. Després de canvis importants, feu clic a «Actualitza les versions»: amb l’opció «Buida també la memòria cau de pàgines» activada, això actualitza les versions i buida la memòria cau de pàgines detectada en un sol clic.

Com resolc l’auditoria del Lighthouse «Serve static assets with an efficient cache policy»?

Activeu «Permet que els navegadors conservin els fitxers estàtics durant un any» a la secció «Accelera» de la pàgina de configuració (disponible mentre el versionatge de CSS/JS està activat). L’extensió serveix els fitxers estàtics amb Cache-Control: public, max-age=31536000, immutable, que és exactament el que demana l’auditoria, i aquí és segur, perquè l’extensió canvia l’URL d’un fitxer sempre que el fitxer canvia, així que els visitants no es queden mai amb una còpia obsoleta. Després d’activar-ho, la pàgina de configuració us indica si les capçaleres s’han verificat al vostre lloc web. Aquesta mateixa opció també resol el nom antic d’aquesta recomanació, «Leverage browser caching», que encara mostren el GTmetrix i altres eines d’anàlisi.

L’extensió edita el meu .htaccess?

Només si activeu l’opció de memòria cau prolongada, i només utilitzant l’API pròpia del WordPress (la mateixa que utilitza el nucli per als enllaços permanents): un bloc clarament marcat entre # BEGIN Prevent Browser Caching i # END Prevent Browser Caching. El bloc s’actualitza quan canvieu opcions relacionades, i s’elimina completament quan desactiveu l’opció, desactiveu o esborreu l’extensió. En multilloc, en nginx, o si definiu la constant PBC_DISABLE_HTACCESS_WRITE, l’extensió no escriu mai el fitxer: en lloc d’això us mostra les regles per afegir-les manualment.

La meva extensió de memòria cau ja afegeix capçaleres de memòria cau del navegador (expires). Necessito totes dues?

No, gestioneu-les en un sol lloc. Si la vostra extensió de memòria cau ja serveix capçaleres de llarga durada per als fitxers estàtics, podeu deixar desactivada aquí l’opció «Accelera»: el versionatge ho manté tot actualitzat de totes maneres. No es trenca res si acaben activades totes dues (les regles no entren en conflicte, simplement guanya el bloc posterior), però una única font és més neta. L’avantatge de gestionar-les aquí és que les capçaleres estan lligades al versionatge (els URL canvien sempre que canvien els fitxers, així que una memòria cau d’un any no pot mostrar mai a ningú un fitxer obsolet) i la pàgina de configuració verifica que les capçaleres funcionen realment al vostre servidor.

La pàgina de configuració diu que les capçaleres de memòria cau no apareixen. Què faig ara?

Les regles hi són, però el vostre servidor no les ha aplicat: el més habitual és que l’Apache de l’allotjament no tingui els mòduls mod_headers/mod_expires, o que les sobreescriptures mitjançant .htaccess estiguin desactivades. Demaneu a l’allotjament que les activi, o copieu les regles que es mostren a la pàgina de configuració a la configuració del servidor. Si deseu la configuració es torna a executar la comprovació. Fins que les capçaleres funcionin, no es trenca res: els navegadors simplement continuen desant a la memòria cau com ho feien abans.

He exclòs un fitxer del versionatge: es conservarà igualment a la memòria cau durant un any?

Si és un fitxer CSS/JS local servit des del vostre lloc web: sí, les regles de memòria cau prolongada funcionen per l’extensió del fitxer i no veuen la vostra llista d’exclusions. Les exclusions gairebé sempre són URL externs (scripts de pagament, CDN), que les regles no toquen mai; però si excloeu un fitxer local perquè no s’ha de conservar gaire temps a la memòria cau, o bé deixeu desactivada l’opció de memòria cau prolongada, o bé afegiu una regla més específica per a aquest fitxer a la configuració del servidor.

Per què els fitxers externs no reben una versió per defecte?

Diversos serveis externs, els scripts de pagament en particular (PayPal, Braintree, Authorize.net), rebutgen les sol·licituds amb un paràmetre de consulta «ver» inesperat, cosa que abans trencava els formularis de compra. Des de la 3.0.0 només es versionen els fitxers locals per defecte; hi ha una casella per tornar a incloure els URL externs si en depeníeu.

Perdo la memòria cau del navegador amb aquesta extensió?

No en el mode automàtic recomanat. Els fitxers es desen a la memòria cau normalment; la versió només canvia quan el fitxer mateix canvia. El mode «a cada càrrega de pàgina» sí que desactiva la memòria cau del CSS/JS: utilitzeu-lo només durant el desenvolupament actiu.

La versió no s’actualitza cada X minuts com ho he configurat. Per què?

El mode antic «cada N minuts» funciona per visitant, mitjançant una galeta: no reconstrueix res al servidor per cron. Cada visitant rep una versió nova dels recursos no més sovint que l’interval triat. Des de la 3.0.0 el mode automàtic és una opció millor per a gairebé tots els casos.

Versiona les imatges dins del contingut de les entrades?

Sí, quan «Imatges» està activat: els URL dels adjunts generats pel WordPress reben versions immediatament, i els URL d’imatges escrits directament al contingut de les entrades reben la versió global dels mèdia del lloc web després de la primera actualització (el botó «Actualitza les versions» o reemplaçar un fitxer de mèdia).

El meu CDN ignora les cadenes de consulta.

Aleshores el versionatge mitjançant paràmetre de consulta no pot invalidar la memòria cau d’aquell CDN per a aquells fitxers. Configureu el CDN perquè inclogui les cadenes de consulta a la seva clau de memòria cau, o utilitzeu versionatge basat en el nom del fitxer (per exemple, reemplaceu un fitxer amb un nom nou).

El meu lloc web mostra un error després de desactivar l’extensió.

Si heu afegit prevent_browser_caching( ... ) al functions.php del vostre tema, aquella línia crida una funció que proporciona aquesta extensió. Un cop desactivada l’extensió, la funció ja no existeix, així que el PHP s’atura amb un error fatal. Dues maneres de solucionar-ho: canvieu al filtre pbc_assets_version (recomanat, no causa mai això) o embolcalleu la crida amb if ( function_exists( 'prevent_browser_caching' ) ) { ... }. Vegeu «Per a desenvolupadors» més amunt.

Ressenyes

7 de juliol de 2026
The new features in 3.x versions raise a very good plugin to excellent! A must to empty users’ browser caches after we make big design changes. Thank you!
17 de maig de 2024
It is the first plugin that I install every time I create a new site, this plugin is the web designer’s best friend, it instantly clears the browser cache and refreshes the page with one click, saving me a lot of time when I update and design the site, avoiding long trips in the browser, also works to show the page to customers, a heartfelt thank you.
29 de octubre de 2023
10-30-23 I do not how this thing does it, but it just solved my problem that was bothering me for weeks and my hosting co could not help. I added this plugin (did not even need to change a setting) and now my changes show up on websites especially the CSS. thank you so much- you are so helpful and what you created is valuable!!!
14 de març de 2023
Fui obrigado a logar no forum para avaliar, é o unico plugin que realmente limpa o css e js, sempre que preciso estou aqui instalando
27 de febrer de 2023
I found this plugin while searching for a way to prevent CSS files from caching while working with a particularly annoying theme (A****). This works perfectly and I will use it on every website I’m developing from this point forwards. Thank you!
Llegiu totes les 29 ressenyes

Col·laboradors i desenvolupadors

«Prevent Browser Caching» és programari de codi obert. La següent gent ha col·laborat en aquesta extensió.

Col·laboradors

“Prevent Browser Caching” s’ha traduït a 12 configuracions regionals. Gràcies als traductors per les seves aportacions.

Traduïu «Prevent Browser Caching» a la vostra llengua.

Interessats en el desenvolupament?

Navegueu pel codi, baixeu-vos el repositori SVN, o subscriviu-vos al registre de desenvolupament per fisl de subscripció RSS.

Registre de canvis

3.2.1

  • 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

  • Novetat: «Permet que els navegadors conservin els fitxers estàtics durant un any» (opcional, a la nova secció de configuració «Accelera»): serveix el CSS, el JS, els tipus de lletra i les imatges amb capçaleres Cache-Control/Expires de llarga durada. Segur per disseny: els URL versionats canvien sempre que un fitxer canvia, així que els visitants continuen rebent les actualitzacions immediatament. Resol l’auditoria del Lighthouse «Serve static assets with an efficient cache policy». A l’Apache/LiteSpeed les regles s’escriuen mitjançant l’API pròpia de .htaccess del WordPress i s’eliminen de nou quan es desactiva l’opció o es desactiva o esborra l’extensió; en nginx i en multilloc la pàgina de configuració mostra un fragment llest per copiar en lloc d’això.
  • Novetat: l’extensió verifica les capçaleres de memòria cau prolongada obtenint un dels fitxers CSS del lloc web mateix i mostra el resultat a la pàgina de configuració, així sabeu si el vostre servidor ha aplicat realment les regles (alguns allotjaments no tenen els mòduls d’Apache necessaris; l’extensió us ho diu en lloc de donar-ho per fet en silenci).
  • Novetat: «Actualitza les versions automàticament després de les actualitzacions d’extensions, temes o del WordPress» (opcional): cobreix les actualitzacions manuals, en lot i automàtiques en segon pla, i buida la memòria cau de pàgines quan aquesta opció està activada. Utilitza la menor invalidació que permet el vostre mode: en el mode automàtic recomanat les versions dels fitxers ja s’actualitzen soles, així que només es buida la memòria cau de pàgines. Aquesta funció no toca mai les versions de les imatges.
  • Novetat: una nota «novetats» única després d’actualitzar, mostrada només a la pàgina de configuració de la mateixa extensió (es pot descartar; no s’afegeix res en cap altre lloc del wp-admin).
  • Novetat per a desenvolupadors: el filtre pbc_cache_policy_rules, l’acció pbc_after_auto_bump i la constant PBC_DISABLE_HTACCESS_WRITE (força el mode només de fragment, sense escriptures de fitxers).
  • wp pbc status i l’habilitat d’estat ara també informen de l’estat de la política de memòria cau (inclòs el resultat de la verificació) i de l’opció d’actualització automàtica.
  • Corregit: un paràmetre de consulta «ver» sense valor ja no es converteix en «ver=.123» després d’una actualització de versions.

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

1.1

  • Added plugin text domain.

1.0

  • First version of Prevent Browser Caching plugin.