Cuánto me alegra poder escribir la segunda parte de la entrada Vamos a contar verdades. Como sabes, si has leído la primera parte, el sistema de caché integrado en Gesbit sufrió una especie de retroceso en sus virtudes, que creo que alguna tiene, modestia aparte, como consecuencia, digo, de la entrada en escena del plugin GbMobile para Gesbit. El asunto, muy resumido, era la posibilidad de que se "cacheara" la respuesta para un dispositivo móvil, siendo que otro usuario podría recibir dicha respuesta "cacheada" navegando tranquilamente desde su ordenador personal, es decir, no con un dispotivo móvil, sino con otro tipo de navegador.
La solución que tomé en su momento fue añadir al caché de Gesbit el "agente de usuario", lo que identificaba también a los posibles dispositivos móviles, de modo que no fuera posible que la respuesta cacheada para un dispositivo móvil fuera servida a un usuario que no navegara con dicho dispositivo. Pero, en la entrada Vamos a contar verdades se asumía por mi parte lo evidente: era una mala solución, porque hacer uso del "agente de usuario" implicaba que se cachearían más contenidos, siendo así que el sistema de caché, sin perder toda su potencia, sí que la veía mermada.
Entonces ya intuí otra posible solución, pero, no sé si fruto del calentamiento que tenía encima, la dejé pasar, hasta hoy, que he vuelto a retomar el asunto, y he visto que, efectivamente, se trata de una mejor solución que la vista e implementada en un primer momento. Ahora el sistema de caché no hace uso del "agente de usuario", tal como era al principio, de modo que la potencia del sistema de caché ha vuelto a sus orígenes, dicho mal y pronto. Ahora un usuario que navegara con Opera, por ejemplo, recibiría la misma respuesta cacheada que otro usuario que navegara con Firefox.
¿Cómo lo he hecho? La verdad es que el asunto era sencillo, pero, había que verlo. Se trataba de deshabilitar el caché, en caso de que el plugin GbMobile entrara en acción. El quid del asunto estriba en que el plugin establece el tema "móvil" antes de que el sistema de caché de Gesbit guarde la respuesta correspondiente. De este modo, he añadido a la clase "GbCache" sendos métodos, para habilitar o deshabilitar el caché, y el plugin "GbMobile" hace uso de este último, deshabilitando el caché en caso de que se reconozca un dispositivo móvil y se establezca el tema correspondiente para el mismo.
Luego entonces, dirás, ¿no se guardan en caché las respuestas para dispositivos móbiles? Pues así es, actualmente, y, sin embargo, esta solución es mejor que la primera por razones evidentes. En primer lugar, como queda dicho, al no usar el "agente de usuario" para preparar respuestas cacheadas, el sistema de caché es más potente, o vuelve a ser tan potente como lo era en un principio. En segundo lugar, las respuestas "móviles" (que no se cachean) son respuestas de muy poco peso, del orden de 2 KB. No digo que no merezca la pena cachearlas, pero, compárese con lo que significaba tener en cuenta el "agente de usuario" en el sistema de caché.
Además, ha de tenerse en cuenta que era el sistema de caché el que estaba adaptándose al plugin GbMobile, por decirlo así: fue por este plugin que se comenzó a tener en cuenta el "agente de usuario" en el sistema de caché. Pero no todo el mundo usará el plugin "GbMobile", ni siquiera todo el mundo usará el sistema de caché (que en Gesbit es opcional, por cierto, y de entrada no está "activado"), así que no tenía mucho sentido tener presente que alguien pudiera usar dicho plugin, sino que había de ser el plugin quien tuviera sus costes, por decirlo así, y no todo el sistema de caché de Gesbit. En definitiva, y, sea como sea, esta solución me agrada mucho más que la primera.
¿A ti no te lo parece? Yo desde luego estoy contento sabiendo que el caché de Gesbit vuelve a ser el que era, que no por eso tengo que dejar el plugin "GbMobile", puesto que, aunque sus respuestas no se cacheen, me sigue pareciendo un buen plugin, que cumple con su función bastante decentemente. Y ya está. ¡Si me vieras! Ahora mismo estoy sonriendo, pensando que cuando llevé a cabo estos cambios era perfectamente consciente de que la poca previsión, por decirlo así, de que el sistema de caché había perdido parte de su potencia, y yo no supe encontrar entonces una solución mejor. Hasta hoy. ;-)
El tema era un tanto peliagudo, porque, el sistema de caché de Gesbit está integrado para algo... y es que se pone en marcha antes que nada, y, si encuentra la respuesta "cacheada" para la petición "actual", simplemente, procede a su envío. El caché de Gesbit no hace uso en absoluto de la base de datos, no hace ni una sola consulta. Ahora bien, lo que se hace ahora es no guardar la respuesta correspondiente, incluso si el caché está activado, en caso de que el plugin GbMobile entre en acción. De este modo, en una siguiente petición, el sistema de caché buscará una posible respuesta guardada, pero, no la encontrará, y dejará seguir adelante a Gesbit.