La cache de Joomla! está conformada por archivos temporales creados para mejorar el rendimiento del sitio. Típicamente se trata de archivos HTML renderizados de ejecuciones previas de scripts PHP. Esto evita que un mismo script, con mismos parámetros, se tenga que volver a correr y en su lugar se sirve directamente el HTML renderizado de la ejecución anterior.

De esta forma es posible disminuir el tiempo de respuesta y uso de CPU y memoria en el servidor. Sin embargo, la caché de Joomla! puede creer rápidamente y aumentar de tamaño. Es necesario asegurarse de eliminar periódicamente los archivos de cache expirados que ya no son necesarios, para evitar quedarse sin espacio en disco en el servidor.



Generalmente se realiza esta tarea desde el panel de administración de Joomla, utilizando la opción "Purge Expired Cache". El problema es que se trata de una tarea manual. Si estamos fuera de oficina y nos olvidamos hacerlo (por ejemplo en vacaciones) es probable que el servidor termine sin espacio en disco con la consecuencia de quedar sin servicio Web.

Veamos entonces cómo purgar la cache de Joomla automáticamente desde un cron utilizando el script de línea de comandos garbagecron.php provisto por Joomla!.

Purgar la cache de Joomla! desde línea de comandos

La aplicación CLI para purgar archivos de cache expirados se encuentra dentro del directorio cli de la instalación de Joomla!. Este script se llama garbagecron.php. Para purgar las entradas de cache expiradas simplemente basta con ejecutarlo:

# php garbagecron.php

Este script no produce ninguna salida, salvo que ocurran errores. Veamos un ejemplo:

root@linuxito:~# du -hs /var/www/linuxito.com/
7.0G	/var/www/linuxito.com/

El directorio /var/www/linuxito.com contiene una instalación de Joomla!. Se observa que el uso en disco es de 7 GB. Sin embargo, de éstos, 6,9 GB son de archivos de cache:

root@linuxito:~# du -hs /var/www/linuxito.com/cache/
6.9G	/var/www/linuxito.com/cache/

Veamos qué ocurre al correr el script:

root@linuxito:~# php /var/www/linuxito.com/cli/garbagecron.php 
root@linuxito:~# echo $?
0

No arroja salida alguna, por ende no hubo errores. Aunque ahora el uso de disco de los archivos de caché es de apenas 85 MB:

root@linuxito:~# du -hs /var/www/linuxito.com/cache/
84M	/var/www/linuxito.com/cache/

Esto se debe a que la mayoría de los archivos correspondían a entradas de cache expiradas.

Crear un cronjob para que se realice automáticamente una vez por día

Esto demuestra que es necesario implementar algún mecanismo que elimine automáticamente las entradas de cache expiradas de forma periódica. Los sistemas GNU/Linux y Unix en general proveen cron para definir tareas programadas.

Antes de comenzar es conveniente determinar la ruta absoluta al binario CLI de PHP:

root@linuxito:~# which php
/usr/local/php7/bin/php

Editar el crontab del usuario "root" o "www-data" (si tiene acceso a una Shell):

# crontab -e

Agregar una entrada como la siguiente para cada sitio Web Joomla! instalado en el servidor:

00 0 * * * /usr/local/php7/bin/php /var/www/linuxito.com/cli/garbagecron.php

Esta configuración corre una vez por día a las 0:00 hs.

Guardar los cambios y cerrar.

Referencias


Tal vez pueda interesarte


Compartí este artículo