La memoria caché es una ubicación que almacena datos de forma temporal para que se puedan recuperar más rápido cuando se necesiten. «Almacenamiento en caché» se refiere al proceso de almacenar dichos datos. El término «caché» viene del inglés «cache», que en contextos no técnicos significa, precisamente, guardar algo en un lugar para que sea más fácil de encontrar luego. En esta página analizaremos qué implica el almacenamiento en caché en contextos online.
En la situación ideal, un usuario que visite tu sitio web ya contaría en su terminal local con todos los activos necesarios para mostrar el sitio casi al instante, pero la realidad es que los activos se encuentran en otra ubicación, posiblemente un centro de datos o un servicio de la nube, y recuperarlos tiene un coste: para el usuario, dicho coste viene en forma de latencia (el tiempo necesario para generar y cargar los activos) y, para la empresa, el coste es económico e incluye tanto el alojamiento del contenido como los costes de tráfico de salida, es decir, lo que se paga por sacar el contenido del lugar de almacenamiento cuando lo solicitan los visitantes. Cuanto más tráfico reciba tu sitio web, más deberás pagar para atender las peticiones de contenido, que en muchos casos se irán repitiendo.
Es ahí donde el almacenamiento en caché revela su utilidad, ya que te permite almacenar copias de tu contenido para acelerar la distribución utilizando menos recursos.
Para entender cómo funciona el almacenamiento en caché, primero debemos entender la mecánica de las peticiones y respuestas HTTP. Cuando un usuario hace clic en un enlace o introduce la URL de tu sitio web en su barra de direcciones, se envía una petición desde el navegador (el cliente) hasta la ubicación del contenido (tu servidor de origen), que procesa la petición y envía una respuesta al cliente.
Por muy instantáneo que esto pueda parecer, en realidad el servidor de origen tarda lo suyo en atender la petición, generar la respuesta y enviarla al cliente. Además, hacen falta numerosos activos para mostrar el sitio web, lo cual significa que deberán enviarse múltiples peticiones por cada dato que conforma tu sitio, como imágenes, páginas web HTML y archivos CSS.
Es aquí donde entra en juego la memoria caché local del usuario. El navegador puede almacenar en el dispositivo ciertos activos estáticos, como la imagen de encabezado con tu logotipo y la hoja de estilo del sitio, con tal de aumentar la velocidad la siguiente vez que el usuario acceda al sitio, pero esta modalidad de almacenamiento en caché solo resulta útil a ese usuario.
Si quieres almacenar activos en caché para todos los usuarios que visiten tu sitio, deberías contemplar la opción de una memoria caché remota, como un proxy inverso.
Hay varios tipos de almacenamiento en caché que se emplean en distintos niveles de la infraestructura de internet, cada uno con su función. Veamos estos diferentes tipos y cómo contribuyen a que la experiencia de navegación sea fluida.
El almacenamiento en caché mediante una red de distribución de contenidos (CDN) reduce la latencia porque permite distribuir los contenidos desde ubicaciones más próximas a los usuarios, con la consiguiente y significativa mejora en los tiempos de carga. Este tipo de almacenamiento guarda copias de los contenidos en servidores del edge repartidos por todo el mundo. Cuando un usuario realiza una petición, la CDN envía el contenido desde el servidor del edge que tiene más cerca, por lo que no hay que esperar la respuesta del servidor de origen. Esto reduce la carga de dicho servidor y permite soportar un mayor volumen de tráfico, porque las peticiones se reparten entre varios servidores.
Al contrario que el almacenamiento en caché mediante CDN, el almacenamiento en el lado del servidor guarda copias de disponibilidad inmediata en el servidor de origen, de modo que el navegador del usuario no tiene que solicitar cada elemento del contenido de nuevo con cada acceso a una misma página. La posibilidad de almacenar objetos de datos reutilizables minimiza el número de consultas a la base de datos y optimiza el rendimiento de tu sitio. El almacenamiento en el lado del servidor puede tomar varias formas:
Almacenamiento de la página: guarda una copia de las páginas HTML
Almacenamiento de objetos: guarda objetos de datos reutilizables
Almacenamiento de código de operaciones: guarda código PHP precompilado
Almacenamiento de bases de datos: guarda resultados de consultas a bases de datos
El almacenamiento en caché en el lado del servidor no solo se utiliza para contenido, pues puede servir para guardar desde páginas web completas hasta consultas individuales a bases de datos.
Una resolución del DNS (sistema de nombres de dominios) es el proceso que emplean los navegadores web para traducir un nombre de dominio, como www.fastly.com, a la dirección IP concreta del servidor de origen que aloja al sitio web. Los navegadores web agilizan este proceso guardando copias locales de los resultados de consultas al DNS, para que las peticiones se resuelvan antes en visitas futuras. En esencia, antes de mirar los servidores de DNS globales, tu navegador busca en su propia memoria caché de DNS por si ya conoce la dirección IP correcta, lo cual reduce considerablemente el tiempo necesario para resolver nombres de dominio y, por ende, acelera el acceso a los sitios web.
Al contrario que los otros dos tipos de almacenamiento en caché que hemos repasado, el almacenamiento de DNS recae en el usuario local y no se encuentra en servidor. Además, sirve específicamente para resolver nombres de dominios, no para distribuir contenido ni agilizar las consultas de bases de datos.
El almacenamiento de contenido en caché es una clase de almacenamiento en caché más general que implica copiar y almacenar múltiples tipos de contenido web para atender a los usuarios de forma más eficiente. El contenido se suele almacenar en caché en servidores (como ocurre con el almacenamiento con CDN y el almacenamiento en el lado del servidor), pero puede encontrarse en otras ubicaciones mediante los siguientes métodos:
Almacenamiento en el navegador: guarda copias locales de contenido web en el dispositivo del usuario para agilizar la carga cuando se vuelva a acceder al sitio.
Almacenamiento en proxy: guarda contenido web en servidores intermediarios (proxis) situados entre el usuario y el servidor de origen de la red.
Almacenamiento en puertas de enlace: guarda una copia de los datos en puertas de enlace de la red de la organización.
El almacenamiento de contenido en caché es muy variable, pudiendo darse en múltiples ubicaciones y afectar a todo tipo de contenido, como imágenes, vídeos y páginas HTML enteras. Al facilitar la accesibilidad de las copias de contenido, ofrece una experiencia de navegación más rápida y fluida a los usuarios, permite que los sitios se carguen de forma más eficiente y reduce el uso de ancho de banda de la red.
Las memorias caché funcionan guardando copias de datos para su uso posterior, así que los sistemas de redes deben saber que esas copias existen. Cuando se encuentra el contenido en la memoria caché, se da un «acierto de caché», que desencadena automáticamente la distribución del contenido desde el servidor del edge hasta el usuario, lo cual acelera el tiempo de carga. Por su parte, la proporción de aciertos de caché corresponde al porcentaje de veces que una consulta termina con un acierto de caché.
Las CDN suelen ofrecer una proporción de aciertos más alta que otros sistemas de almacenamiento en caché en servidores, ya que despliegan múltiples servidores en el edge a nivel mundial, en puntos estratégicos próximos a los usuarios finales. Dada la gran cantidad de usuarios a los que suele atender una CDN, es probable que un usuario relativamente cercano ya haya generado una copia de los datos en el servidor del edge de la región en cuestión.
Sin embargo, las peticiones de usuarios no siempre terminan en un acierto de caché. A veces, el servidor no puede ofrecer el contenido desde el edge y, por tanto, debe recuperarlo del servidor de origen, lo que se conoce como «fallo de caché» y puede darse por varias razones:
primera petición (memoria caché fría);
purga o invalidación de la caché;
limitaciones de capacidad;
actualizaciones de contenido.
Un fallo de caché también puede ocurrir por vencimiento: el contenido se almacena en caché en una CDN con un valor de tiempo de vida (TTL) determinado y, cuando ese valor vence, el contenido queda eliminado de la memoria caché. Los equipos de desarrollo e ingeniería de redes establecen los valores de TTL de acuerdo con el tipo de contenido que se almacena; así, el contenido dinámico, como los artículos de noticias, suele tener un valor de TTL corto que no pasa de los minutos. En cambio, las memorias caché de las CDN suelen presentar valores de TTL más largos, de entre días y semanas, dado que su contenido, que incluye imágenes, vídeos, CSS y datos de JavaScript, es estático.
Limpiar la memoria caché puede resultar útil en ciertas situaciones, pero no siempre es necesario o recomendable. A continuación hemos destacado razones importantes por las que es bueno limpiar la caché.
En entornos locales, los datos almacenados en caché pueden acumularse a lo largo del tiempo y acaparar demasiado espacio en el sistema, lo cual causará problemas serios en dispositivos personales como portátiles o ultraportátiles, que tienen una capacidad limitada. Al limpiar la caché, puedes liberar un preciado espacio que contribuirá a mejorar el funcionamiento de tu dispositivo.
Con el paso del tiempo, los datos en caché pueden quedar dañados u obsoletos, lo cual ralentiza los sitios web y puede impedir el acceso a funciones clave. Limpiar la memoria caché suele resolver estos problemas al eliminar los archivos dañados u obsoletos.
Los datos almacenados en caché pueden incluir información sensible, como credenciales de inicio de sesión, historial de navegación u otros datos privados. Al limpiar la caché, estarás protegiendo esa información eliminándola del sistema.
Sin embargo, cabe señalar que limpiar la caché tiene consecuencias que son contraindicadas en ciertos contextos:
Cuando un usuario limpia su caché, elimina datos que agilizan la carga de aplicaciones y sitios web, de modo que la siguiente vez que se carguen deberán hacerlo desde cero, con el consiguiente tiempo adicional hasta que se regenere la memoria caché.
Una limpieza de caché puede resolver algunos problemas de rendimiento, pero a menudo solo lo hará de forma temporal. Si no se soluciona el problema de raíz, puede que vuelvan a surgir dificultades en cuanto se regenere la memoria caché. Es clave, pues, identificar y abordar el problema de fondo para solucionarlo de forma permanente.
Una de las principales ventajas del almacenamiento en caché es la mejora del rendimiento, por lo que la eliminación de los datos en caché implica perder ese valor añadido.
El almacenamiento en caché con Fastly
Fastly emplea el almacenamiento en caché en su CDN para acelerar la distribución de contenidos. Al almacenar copias exactas de tu contenido en nuestros servidores repartidos por el mundo, reducimos la latencia y la carga que soportan tus servidores y aseguramos el acceso más rápido para tus usuarios.
Además, Fastly ofrece funcionalidades como la purga instantánea, para actualizar rápidamente el contenido, y las reglas personalizables de almacenamiento en caché. Nuestro método mejora la experiencia de uso, con un acceso más rápido al contenido, y al mismo tiempo reduce los costes de tráfico de salida y de ancho de banda.
Descubre cómo almacenar en caché con una CDN