‘Bendito’ y ‘Maldito’ WP Rocket… si has tratado de mejorar el rendimiento de tu página web y has llegado a la sabia decisión de instalar el plugin de caché WP Rocket, habrás pensado más de una vez éste o un pensamiento contradictorio del estilo.

¿y por qué ‘Bendito’ y ‘Maldito’ WP Rocket a la vez?

‘Bendito’ cuando, tras su instalación y configuración, descubres la gran mejora de rendimiento y velocidad de carga que llega a alcanzar tu web.

Hosting Web

Y ‘maldito’ por los problemas a los que podrás enfrentarte en el proceso de configuración para que tu web no reviente de una forma u otra.

Desde Hoswedaje, hemos querido preparar este artículo para explicar cómo solucionar uno de los posibles problemas de WP Rocket: el colapso que el preload de WP Rocket puede generar en tu servidor.

¿Cómo evitar que WP Rocket Preload Cache colapse tu servidor?

En esta ocasión, vamos a realizar los pasos a seguir en un entorno Plesk. Los pasos a seguir con CPanel son muy parecidos. Algunos usuarios prefieren realizar este tipo de acciones dejando el WordPress en mantenimiento. Nosotros, en este caso, hemos optado por no realizar esta acción.

Paso 1: Desactivar WP Cron de WordPress

El preload de WPRocket se ejecuta mediante el propio cron de WordPress. Es por ello, que lo primero que tenemos que hacer para ejecutar el preload de WP Rocket cuando mejor nos convenga es desactivar wp_cron de WordPress. Para ello, tenemos que acceder a nuestro archivo functions.php del theme utilizado y añadir estas líneas:

/** desactivar cron wordpress**/
define('DISABLE_WP_CRON', true);

Para acceder a este archivo, podemos acceder por ftp o mediante Plesk, accediendo a la suscripción, al "administrador de archivos" y navegando hasta nombredelaweb/httpdocs/wp-content/themes/temaactivo/functions.php

Desactivar WP_Cron de WordPress

Con este paso, el cron por defecto de WordPress quedará desactivado. En siguientes pasos reactivaremos este cron ejecutándolo desde Plesk.

Paso 2:  Iniciando el proceso para la precarga de WP Rocket mediante un cron

Siguiendo indicaciones de la propia documentación del plugin, vamos a crear un archivo que llamaremos "rocket-clean-domain.php" y guardaremos en la raíz del WordPress. Para ello, accederemos vía ftp o mediante Plesk y crearemos el archivo en cuestión:

Crear archivo en Plesk

Crear archivo Rocket Clean Domain

Una vez creado, acedemos al archivo pinchando sobre el propio archivo creado:

Crear archivo Rocket Clean Domain

Hosting Web

Añadimos el siguiente código y pulsamos en aplicar:

<?php
// Carga WordPress.
require( 'wp-load.php' );

// Limpia la cache.
if ( function_exists( 'rocket_clean_domain' ) ) {
rocket_clean_domain();
}

// Precarga la cache.
if ( function_exists( 'run_rocket_sitemap_preload' ) ) {
run_rocket_sitemap_preload();
}

Código archivo Rocket Clean Domain

Paso 3:  Creación de Cron WordPress desde Plesk

En plesk, volvemos a la suscripción y buscamos el botón "Tareas Programadas". Suele encontrarse en la columna derecha:

Programar una tarea CronTareas Programadas en Plesk

Al acceder, si antes no hemos creado una tarea programada o cron, lo normal es que aparezca vacío. Lo que vamos a hacer es crear nuestra priemera "tarea programada" y para ello pulsaremos es "Añadir nueva":

Añadir Tarea Programada en Plesk

Vamos a configurar una tarea cron para WordPress que se ejecutará cada  30 minutos.

Para ello, añadiremos los siguientes valores:

  • Activa: marcar la casilla Activa
  • Tipo de tarea:  Ejecutar un script PHP
  • Ruta de acceso del script: httpdocs/wp-cron.php
  • Usar la versión PHP: la versión PHP que esté utilizando ahora mismo la web
  • Ejecutar: estilo cron
  • Segundo campo "Ejecutar: */30 * * * *
  • Descripción: Cron WP cada 30 minutos
  • Notificar: Solo errores
  • Enviar notificaciones a: añadir la cuenta de correo que queremos que reciba las notificaciones en caso de que la tarea cron falle.

Programación de una tarea cron

Una vez tengamos todo configurado pulsamos en "Aceptar".

Paso 4: Comprobar que la tarea programada (cron) funciona

Para comprobar que la tarea programada funciona correctamente vamos a instalar un plugin. En esta ocasión vamos a utilizar un plugin bastante liviano que lo único que hace es crear un registro cron. El plugin en cuestión es Cron Logger. Desde el panel de nuestro WordPresss, accedemos a "Plugins" > "Añadir nuevo", buscamos "Cron Logger", lo instalamos y lo activamos.

Plugin Cron Logger

Una vez instalado y activado el plugin, volvemos a plesk. En la pantalla en la que nos encontrábamos de "tareas programadas", en la reciente tarea programada, vamos a pulsar en "Ejecutar ahora"

Ejecutar ahora tarea programada

Esperamos a que termine de ejecutarse la tarea y volvemos a nuestro panel de WordPress. Accedemos a "Herramientas" > "Cron Logs" y tendrá que aparecernos con fecha de ahora mismo el cron que acabamos de ejecutar. Si esto es así, el cron se ha configurado correctamente.

Plugin Cron Logs ejecutado

 

Paso 5: Instalar WP Rocket Custom Preload Intervals

Antes de crear el cron para la preload de WP Rocket, vamos a instalar un plugin llamado WP Rocket | Custom Preload Intervals. Este plugin creado por el propio equipo de WP Rocket es un plugin que reducirá el tiempo de precarga de caché de cada página a 5 segundos. De esta forma, evitaremos que el servidor pueda colapsarse por una lto número de peticiones en muy poco tiempo. Solo tenemos que descargarnos el plugin, subirlo, instalarlo y activarlo.

Instalar Plugin WP Rocket | Custom Preload Intervals

Paso 6: Crear cron Preload WP Rocket

Vamos a volver a nuestro panel Plesk y vamos a crear una nueva tarea cron para la precarga de WP Rocket. En esta ocasión con los siguientes parámetros:

  • Activa: marcar la casilla "Activa"
  • Tipo de tarea:  Ejecutar un script PHP
  • URL: httpdocs/rocket-clean-domain.php
  • Usar la versión PHP: la que tenga la web
  • Ejecutar: diariamente > en > aconsejamos utilizar una hora con poco tráfico en su web. La madrugada suele ser la mejor opción. Si vas a realizar estas acciones en varias webs ubicadas en el mismo servidor, evita utilizar la misma hora.
  • Descripción: Cron para WPRocket
  • Notificar: Solo errores
  • Enviar notificaciones a: añadir la cuenta de correo que queremos que reciba las notificaciones en caso de que la tarea cron falle.

Crear Cron WPRocket

Paso 7: Comprobar que el cron de Preload WP Rocket funciona correctamente

Volvemos a plesk. En la pantalla en la que nos encontrábamos de "tareas programadas", en la reciente tarea programada "Cron para WPRocket", vamos a pulsar en "Ejecutar ahora"

Ejecutar ahora Cron WP Rocket

Esperamos a que termine de ejecutarse la tarea y volvemos al "Administrador de archivos" de Plesk. Si la configuración de WP Rocket es correcta y el cron ha funcionado correctamente, se habrán creado una serie de archivos y carpetas dentro de nuestra suscripción plesk. Es por ello, que si navegamos al "Administrador de archivos" y navegamos hasta la ruta:httpdocs/wp-content/cache/wp-rocket encontraremos una carpeta con el nombre de la web y dentro más carpetas y archivos html de cada una de las páginas y posts que haya precargado el cron. Y lo más importante, la fecha de estos archivos y carpetas tiene que ser la misma que la fecha en la que se ejecutó el crón.

Archivos prelaoad Cache en Servidor Plesk

Como esta tarea cron la hemos programado para que se ejecuta diariamente, aconsejamos comprobar al día siguiente de la primera ejecución estos archivos. Para comprobar que se han creado en la fecha correspondiente.

Paso 8: Ampliar la vida útil de la cache en WP Rocket

Por defecto, WP Rocket asigna una vida útil de la caché de 10 horas. Como hemos configurado un cron para esta función que se ejecuta una vez al día, aconsejamos cambiar la vida útil de la caché a 1 día. Para ello, accedemos a WP Rocket > Caché y bajamos a la parte inferior. En la Parte "Vida útil de la caché" cambiamos la fecha a "1 días" y guardamos cambios.

Vida útil caché WP Rocket

Configuración WPRocket Preload Cache

Con estos siete pasos hemos conseguido varias cosas:

  • Que el cron de WordPress se ejecute cada medi hora. Independientemente de que acceda o no alguien a la web.
  • Que la precarga de caché de WP Rocket se ejecute a la hora con menos sobrecarga del servidor y en un intervalo de tiempo superior.

Espero que te haya sido útil este tutorial, ¿tienes alguna duda? ¿lo haces de otra forma? No lo pienses y añade un comentario.

¡Muchas gracias!