Surge, caché de página para todos

Si andas buscando un plugin que sirva caché de páginas de tu web para acelerar su carga deja de buscar, te presento a Surge, la solución más sencilla y potente para añadir caché de páginas a tu web.

¡Ehh, espera! ¿qué es la caché de páginas?

Vale, tienes razón, que hablamos tanto de caché que tienes que tener ya un lío considerable…

Entre las muchas estrategias de caché que puedes aplicar a tus contenidos (estáticos, objetos, opcache, memcached, proxy inverso, etc.) tenemos la caché de páginas, que es la más básica, sencilla, compatible y fácil de aplicar en cualquier hosting, pero eso no quiere decir que no sea potente.

Básicamente, lo que hace la caché de páginas es crear copias en HTML de las páginas de tu web para servirlas al segundo visitante que las quiera ver. En la primera visita a una página de tu web se crea una copia estática en HTML.

De este modo, cuando llegue un segundo visitante WordPress no tendrá que hacer consultas a la base de datos para mostrar los contenidos dinámicos de esa página, mostrándole la copia en HTML realizada.

Dicho de modo simple, la caché de páginas crea copias estáticas del contenido dinámico de tu web WordPress, acelerando de este modo los tiempos de carga de las páginas, al eliminar los tiempos de espera resultantes de las consultas dinámicas necesarias normalmente para mostrar contenidos en WordPress.

¿Ya se entiende mejor?

Bien, ¿es eso entonces lo que hace Surge?

Efectivamente, el plugin Surge, al igual que otros muchos plugins, crea versiones estáticas en HTML de tus páginas, para reducir los tiempos de carga de las mismas, ya que elimina la necesidad de que WordPress realice consultas a la base de datos para mostrar su contenido, mostrando las copias estáticas de tus entradas, páginas, etc.

Ya tengo un plugin de caché ¿por qué debería cambiar a Surge? Es más ¿debería?

Dependiendo de las estrategias de caché que estés usando en tu web deberías – o no – cambiar a usar Surge, o añadirlo a tu caja de herramientas WPO.

Si ya estás utilizando un plugin de optimizaciones y caché, que dispone a su vez de caché de páginas, como WP Rocket, SiteGround Optimizer u otros, debes primero comprobar si en estos plugins puedes desactivar su propio sistema de caché de páginas para activar (probar) Surge.

Por ejemplo, si utilizas SG Optimizer la caché de páginas (archivos) es opcional, y puedes activarla a voluntad, pero en ningún caso el hecho de activar la caché de páginas, de SG Optimizer o de Surge, significa que tengas que prescindir del resto de sistemas de caché (dinámica, memcached).

Lo que normalmente suele ser incompatible es tener activos al mismo tiempo dos sistemas de caché de páginas.

Otra situación es si ya tienes un plugin cuya única funcionalidad sea la caché de páginas, como WP SuperCache o Cache Enabler. En este caso la cosa es tan sencilla como desactivarlo y activar Surge, comprobar qué plugin funciona mejor en tu web, y decidir.

Aquí aprovecho para recordar, una vez más, que no hay un plugin de caché u optimizaciones mejor. Debes probar en cada web qué combinación de optimizaciones y sistemas de caché funcionan mejor para el tipo de contenido y objetivos del sitio.

¿Es Surge compatible con WP Rocket?

Entrando en detalle, y como es mucha gente la que usa WP Rocket, te diré que en principio no son compatibles, y de hecho WP Rocket te avisará que hay un problema.

Esto es debido a que WP Rocket tiene su propio sistema de caché de páginas, y no debes tener más de uno activo, así que el mensaje es correcto.

Ahora bien, si quieres probar cuál de los dos plugins es más efectivo con la caché de páginas puedes desactivar la caché de páginas de WP Rocket con este plugin.

¿Es Surge compatible con WooCommerce?

Todos sabemos de la importancia de que no se almacenen en caché las sesiones de una tienda online WooCommerce, para que siempre se muestren los datos del usuario actual, no ninguna versión guardada, que podría mostrar información de otro cliente ¿verdad?

Pues esto es algo que cualquier plugin de caché debe respetar, y no almacenar NUNCA en caché las páginas más delicadas de WooCommerce, a saber:

  • Mi cuenta
  • Carrito
  • Finalizar compra

Estas páginas siempre deben estar excluidas de todo sistema de caché, o sea, SIEMPRE. ¿He dicho SIEMPRE?

Y sí, Surge es compatible con WooCommerce a este respecto, respeta las cabeceras Cache-Control: no-cache de las páginas dinámicas de WooCommerce, así que no las almacenará nunca en caché.

¿Es Surge compatible con redes de sitios. (multisitio) WordPress?

Sí, totalmente, lo activas para la red y ya está.

¿Es Surge compatible con CloudFlare?

Pues sí, también. Surge es compatible con la mayoría de proxies HTML, como CloudFlare. Es más, como por defecto – salvo que actives su caché de páginas completa –  CloudFlare solo almacena en caché recursos, no páginas completas, y Surge crea caché de páginas completas, son totalmente compatibles y complementarios.

¿Se pueden excluir páginas de la caché de páginas de Surge?

Si, además de las páginas dinámicas de WooCommerce, quieres excluir otras páginas con is_page para que Surge no haga copias en caché de las mismas puedes hacerlo con un código como el siguiente:

/* Excluir paginas de cache */
add_action( 'template_redirect', function() {
if ( is_page( array( '123', '124', '125' ) ) ) {
header( 'Cache-Control: no-cache' );
}
} );

Esta función añadirá la cabecera  Cache-Control: no-cache a las páginas que indiques en la línea del array, en el ejemplo las página con los IDs 123, 124 y. 125 (también puedes usar el título de la página o el slug)

Huelga decir que esta función no funciona solo con Surge, funcionará con cualquier plugin de caché, porque lo que hace es añadir la cabecera Cache-Control: no-cache, que es estándar y respetará cualquier sistema de caché.

¿Cómo sé si está funcionando la caché de páginas de Surge?

Si ya te has animado y has instalado y activado el plugin Surge, lo siguiente es comprobar que esté funcionando correctamente, para lo que te sugiero que hagas las siguientes comprobaciones:

  1. Comprueba que en el archivo wp-config.php exista la línea define( 'WP_CACHE', true );(Surge la añade automáticamente al activar el plugin y la quita al desactivarlo)
  2. Comprueba que exista la carpeta /wp-content/cache/surge/, que es donde se almacenarán las copias estáticas de tus páginas. (Surge la crea automáticamente al activar el plugin, pero no la borra, si dejas de usarlo borra esta carpeta porque ocupará mucho espacio).
  3. Comprueba que se haya creado el archivo /wp-content/advanced-cache.php y que en la cabecera del mismo indique que es un dropin de Surge. También aparecerá en tu lista de plugins dependientes.
  4. Ve a la herramienta de salud del sitio de WordPress, que suele avisar del estado y problemas de caché.
  5. Visita en modo incógnito tus páginas y comprueba que la cabecera x-cache-enabled tenga el valor True.
  6. Comprueba la velocidad de carga de tus páginas en alguna herramienta de medición como GTMetrix, comparado con lecturas anteriores. Surge suele ofrecer tiempos de carga al menos un 70 veces más rápidos que un WordPress sin optimizar.

¿Cada cuánto tiempo se vacía la caché de Surge?

Salvo que cambies sus parámetros por defecto (lo vemos más abajo), Surge vacía la caché cada 10 minutos, y cada vez que publicas o actualizas una página/entrada.

¿Cómo se configura Surge?

Esto es lo mejor de todo, pues en Surge no tienes que configurar nada, de hecho ni siquiera tiene página de opciones o ajustes. Funciona perfecto solo con activarlo.

Ahora bien, además de lo ya visto antes, puedes aplicar algunos retoques a su funcionamiento creando un archivo de configuración personalizado para Surge.

Se hace así:

  1. Crea un archivo nuevo en la carpeta raíz de tu instalación de WordPress y llámalo, por ejemplo, configurar-cache.php.
  2. Añade al archivo lo siguiente:
    <?php
    return $config;
  3. Añade al archivo wp-config.php la siguiente línea: define( 'WP_CACHE_CONFIG', __DIR__ . '/configurar-cache.php' );. De este modo le indicamos a Surge dónde encontrar su archivo de configuración personalizada.

Y aquí empieza lo bueno. Ahora abre el archivo configurar-cache.php para editarlo, y puedes configurar el array $config con los valores que quieras cambiar. Los disponibles son los siguientes:

Clave del array Valor
ttl La cantidad de segundos que se cachea una página antes de invalidarla
ignore_cookies Un array de nombres de cookies que no harán que se excluya una página de la caché
ignore_query_vars Un array de parámetros de URL que no harán que se excluya una página de la caché
variants Un array de «variantes» de invalidación de caché (aquí tienes varias)

Configurar un tiempo de caducidad mayor

Un ejemplo de cómo usar los valores de array en el archivo de configuración sería configurar un tiempo de caducidad de la caché mayor que el que establece por defecto el plugin Surge (600 = 10 minutos). A esto se le llama el TTL (del inglés Time To Live, o tiempo de vida).

En sitios de poco tráfico tendría todo el sentido cambiar la caducidad de la caché, y que no se renueve cada tan poco tiempo ¿no?

Así, podríamos ampliar el tiempo de vida de la caché a 30 minutos (ttl de 1800), cambiando los valores del $config, de este modo:

<?php
$config['ttl'] = 1800;
return $config;

Y esto es solo un ejemplo, a partir de aquí el PHP es tu amigo 🙂

¿Cómo se vacía la caché de Surge?

Por defecto la caché de Surge se vacía al publicar entradas y páginas, pero puedes además forzar el vaciado total de la caché de páginas de 2 maneras:

  1. Activa y desactiva el plugin. Cuando lo desactivas vacía la caché.
  2. Borra la carpeta /wp-content/cache/surge/.

Bueno, creo que no me dejo nada. Solo te animo a probar Surge. Si aún no tienes en marcha ningún sistema de caché de páginas (archivos) ya estás tardando, y si ya lo tienes nunca está de más probarlo, igual te llevas una agradable sorpresa y funciona mejor que el actual.

Por si no lo habías adivinado ya, Surge es totalmente gratuito.

Deja un comentario

A %d blogueros les gusta esto: