La clase GbCache de Gesbit se encarga, entre otras cosas, de comprobar si existe contenido "cacheado" cuyo tiempo de vida haya expirado, es decir, de modo que borra el contenido del caché cada cierto tiempo, actualmente, el caché de Gesbit expira cada seis horas. Sin embargo, esta funcionalidad tenía un problema, y es que no se me ocurrió otra cosa que comprobar si existía contenido "cacheado" y expirado a cada petición de usuario, siempre que se use el caché de Gesbit, justo antes de enviar el contenido "cacheado" al usuario, o al menos tratar de hacerlo.
Hasta ahora estaba funcionando bien; aparentemente, comprobar si en el directorio del caché existían archivos expirados, lo que significa revisar todos los archivos de dicho directorio, no llevaba mucho tiempo, aunque, como un egregio lector de esta bitácora apuntaba en un comentario, quizá era demasiado revisar esta cuestión a cada petición de los usuarios, puesto que, si la bitácora tenía muchas visitas, muchos archivos "cacheados", esto podía implicar un consumo excesivo de recursos. No quedó claro cómo de excesivo, pero, ciertamente, tampoco se puede dejar de pensar en ello.
Mientras se implementa o no en Gesbit una especie de "Cron", una especie de "gestor de tareas", se me ha ocurrido algo muy sencillo, pero, que, no se me ocurrió en su momento, y es utilizar una variable de sesión para comprobar si ya hemos comprobado el contenido del caché expirado para una determinada sesión de usuario. Es decir, ahora no se comprueba la expiración del caché a cada petición de usuario, sino a cada sesión de usuario, quiere decirse, que nos ahorramos todas las peticiones del mismo usuario, aunque, por supuesto, otros usuarios podrán ejecutar la limpieza del caché, en otra sesión de usuario.
Además, he "movido" el punto en que se comprueba si existe contenido en el caché expirado o no. Efectivamente, este punto es justo el momento en que se va a proceder a enviar contenido cacheado al usuario, por supuesto, si antes ha sido guardado. El cambio consiste en comprobar el caché expirado sólo si la petición del usuario es "cacheable", lo que quiere decir que es posible que exista contenido cacheado para ella. Si la petición de usuario no es cacheable, tampoco se comprobará el caché expirado, y no como se hacía hasta ahora, que se comprobaba en todo caso.
La verdad es que apenas si se nota diferencia. Mejor dicho, no se nota, porque, como he dicho arriba, tampoco se notaba ninguna "perturbación" por comprobar el caché expirado a cada petición del usuario, pero, es de suponer (o al menos así lo he supuesto) que algo se habrá ganado con esta medida. Sobre todo, si llega el caso de que una determinada bitácora gestionada con Gesbit, y que use el caché de contenido integrado, cuenta con una cantidad de visitas formidable. Quizá hasta podría realizarse alguna prueba sobre este asunto, pero, de momento, quédese como está.
Ahora bien, acaso el egregio lector a que me he referido esté leyendo esto, y quisiera preguntarle, ¿qué te parece, maestro, esta solución "ad hoc"? ¿Puede valer o qué? ;-)