viernes, 21 de diciembre de 2007

Cacheando, que es gerundio

El otro día nos llamó un lector del periódico para preguntarnos porqué le había desaparecido un comentario que había escrito en una noticia.

Le preguntamos qué noticia era y, tras localizarla, observamos que su comentario estaba visible.
Preguntamos entonces al lector qué navegador estaba usando (era Internet Explorer) y le sugerimos entonces la combinación "mágica" de teclas: Ctrl+F5

¡Ya veo el comentario! nos respondió el paciente lector, ¿por qué pasaba esto?, nos preguntó. Mi respuesta fue algo críptica: "el navegador le estaba mostrando la página no actualizada que tenía guardada en la caché".

Intentaré en esta entrada enmendarme y explicar un poco mejor qué es eso de la caché.
Podríamos definir caché como una técnica ampliamente utilizada en los ordenadores que consiste en guardar la información más utilizada en una localización más cercana (más accesible y rápida) al elemento que necesita esta información en vez de en su ubicación original.

No queda muy claro ¿verdad?

A ver si con un ejemplo se entiende mejor:
Volvamos al lector de las noticias y su programa navegador. Generalmente los navegadores van guardando una copia en el ordenador del usuario de las páginas y otros elementos (imágenes, archivos auxiliares, etc) que el usuario va visitando.
Con esto lo que se consigue es que cuando visitamos una página en la que ya hemos estado anteriormente el navegador nos muestra la copia que guardó en la anterior visita, en vez de recuperar los contenidos de la página de internet.
Obviamente, la página se carga en el navegador instantáneamente ya que está guardada en el mismo ordenador del usuario. La desventaja de esto es que si la página "verdadera" ha cambiado mientras, no nos enteramos.
La ubicación donde el navegador guarda estas páginas temporales es la llamada caché del navegador.

No sólo "cachean" (disculpen el barbarismo) los navegadores. Como decíamos, esta técnica se utiliza mucho, y a todos los niveles: desde los microprocesadores (CPU) hasta los programas que utilizamos los usuarios finales.

Esta misma página que Ud. está leyendo ha sido cacheada varias veces por distintos dispositivos y programas.
La mayoría de las páginas web hoy en día no son estáticas, sino dinámicas, esto es, se generan "al vuelo", cuando alguien (el lector) las solicita a un servidor web.

Este texto que estoy escribiendo, el título, la fecha y demás datos se guardan en una base de datos. Cuando alguien solicita esta página, el servidor web a su vez pide los datos a la base de datos (que puede estar en la misma máquina o en otra). Una vez obtenidos los datos necesarios, "compone" la página dinámicamente, poniendo el título en un sitio, el texto en otro, añadiendo el encabezado de la página y el pie. Una vez montada la página, la devuelve al cliente (la persona que desde su navegador solicitó la página).

En este sencillo proceso se cachea casi todo por razones de eficiencia. Si a la base de datos le va a llegar muchas veces la solicitud "dame el título, texto y fecha del artículo X", el programa que la gestiona guardará en memoria los resultados de esta consulta, para que la siguiente vez que se lo pidan pueda devolver estos datos con mayor rapidez.

El servidor web, una vez que tiene los datos, como decíamos, "monta" la página final y la guarda también, para que la siguiente vez que le sea solicitada no tenga que repetir la consulta a la base de datos ni el proceso de montaje.

Finalmente, el navegador de la persona que solicitó la página con toda probabilidad también cacheará la página, o algunos de sus elementos, para que en una posterior visita no tenga que solicitarla de nuevo al servidor web.

La duda que nos puede surgir es ¿cuánto tiempo permanecen los datos en las cachés? En algún momento tendrán que renovarse, si no, veríamos siempre todo igual.

La respuesta es compleja, y depende mucho de la tipología del sitio web, del número de visitas y muchos más factores. Por ejemplo, este blog actualiza su caché cada 5 minutos aproximadamente. Otras páginas web, en las que la información varía más en el tiempo (por ejemplo, la página web del diario Público) se actualizan con mayor frecuencia. A menudo se busca un compromiso entre la conveniencia de cachear páginas (se sirven con mayor rapidez) y la necesidad de que éstas estén actualizadas.

1 comentario:

  1. Cuántas injusticias se cometen en nombre de la caché!

    ResponderEliminar