Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

Carga especulativa y bfcache: las dos cachés del navegador que hacen tu web instantánea

Hay dos mejoras de velocidad que no dependen de tu hosting ni de tu plugin de caché, sino del navegador de tu visita. Cuando funcionan bien, navegar por tu sitio se siente instantáneo. Cuando no, nadie se entera de que se las está perdiendo.

1. Carga especulativa: adelantarse al clic

Desde la versión 6.8, WordPress le dice al navegador: «si el usuario muestra intención de ir a otra página de este sitio, empieza a descargarla ya». Lo hace con un estándar llamado Speculation Rules.

Por defecto, WordPress lo activa de forma prudente:

  • Solo para visitantes no conectados.
  • En modo prefetch: descarga el HTML de la página siguiente, pero no la «dibuja».
  • Con intensidad conservadora: empieza cuando el usuario presiona el enlace, no antes.
  • Nunca para el escritorio, el login ni otros enlaces internos de WordPress.

Solo funciona en navegadores basados en Chromium (Chrome, Edge, Brave, Opera). En Safari y Firefox simplemente no hace nada, y no rompe nada.

2. bfcache: el botón Atrás instantáneo

El bfcache (caché de ida y vuelta) es una función del navegador: cuando sales de una página, la guarda completa en memoria, con su scroll y su estado. Si vuelves con el botón Atrás, la muestra al instante, sin pedir nada al servidor.

No hay que activarlo: viene en todos los navegadores modernos. Pero hay cosas que lo impiden, y son muy comunes en WordPress:

  • La cabecera Cache-Control: no-store, que algunos plugins y hostings envían a todas las páginas.
  • Scripts que usan el evento unload (típico de herramientas de analítica o chats antiguos).
  • Conexiones abiertas (WebSocket) de chats en vivo o notificaciones.

Cómo comprobar si funcionan

El bfcache: abre tu sitio en Chrome, pulsa F12, ve a Application → Back/forward cache y pulsa Test back/forward cache. Si dice «Restored from back/forward cache», funciona. Si no, te muestra la razón exacta.

La carga especulativa: mira el código fuente de tu portada (Ctrl+U) y busca speculationrules. Si aparece un bloque <script type="speculationrules">, está activa.

También puedes revisar la cabecera desde la terminal:

curl -sI https://tudominio.cl/ | grep -i cache-control

Si aparece no-store en páginas públicas, busca qué plugin o regla del servidor lo pone: es probable que no haga falta.

Ajustarlas a tu sitio

Más velocidad (sitios con buen hosting)

El modo prudente es seguro, pero se puede ir más lejos. Este mu-plugin cambia a prerender (la página se carga y se dibuja completa por adelantado) con intensidad moderada (empieza cuando el cursor se queda sobre el enlace). Guárdalo como wp-content/mu-plugins/cwp-especulativa.php:

<?php
/**
 * Plugin Name: Carga especulativa a medida (Curso WordPress)
 */

add_filter( 'wp_speculation_rules_configuration', function ( $config ) {
	if ( ! is_array( $config ) ) {
		return $config; // Está desactivada: no la forzamos.
	}
	$config['mode']      = 'prerender';
	$config['eagerness'] = 'moderate';
	return $config;
} );

// Rutas que nunca deben cargarse por adelantado.
add_filter( 'wp_speculation_rules_href_exclude_paths', function ( $rutas ) {
	$rutas[] = '/mi-cuenta/*';
	$rutas[] = '/salir/*';
	return $rutas;
} );

Prerender ejecuta la página completa, incluidos los scripts. Si usas analítica que no reconoce el prerender, podrías contar visitas que nunca ocurrieron. Google Analytics 4 lo maneja bien; herramientas antiguas o hechas a mano, no siempre. Y cada prerender es una petición a tu servidor: en un hosting justo, mejor quédate en prefetch.

Desactivarla (casos raros)

Si tienes enlaces que hacen algo al visitarlos (por ejemplo, «Agregar al carrito» como enlace, o descargas que cuentan visitas), puedes excluirlos agregando la clase no-prefetch al enlace. Y si quieres apagarla del todo:

add_filter( 'wp_speculation_rules_configuration', '__return_null' );

Recuperar el bfcache

Si la prueba de Chrome dice que Cache-Control: no-store lo impide, revisa en este orden:

  1. Los ajustes de tu plugin de caché o de seguridad (algunos tienen una opción «no cachear en el navegador»).
  2. Las reglas del .htaccess que mencionen no-store.
  3. Si usas Cloudflare, las reglas de caché que agregan cabeceras.

Las páginas del escritorio y las de usuarios conectados sí deben llevar no-store: eso es correcto y no hay que tocarlo.

¿La prueba de bfcache te muestra una razón que no entiendes? Cópiala en el foro y te ayudamos a identificar qué plugin la provoca.