# Caché

> Guardar una copia de una respuesta a mano para no tener que calcularla de nuevo.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/caching/
- En inglés: [Caching](https://tidbit.legios.com.ar/caching/)

Usar una **caché** (o **cachear**) significa guardar el resultado de algo lento o caro, una consulta a la base de datos, una página web, una foto, un cálculo, en un lugar rápido de leer, para que la próxima vez que alguien lo pida le des la copia guardada. Cuando la respuesta está ahí, es un **cache hit**; cuando no, es un **cache miss**: hacés el trabajo lento y en general guardás el resultado para la próxima.

En un solo clic hay cachés por todos lados. Tu navegador guarda imágenes y archivos de los sitios que visitás. Una CDN guarda copias de páginas en ciudades cerca tuyo. La aplicación guarda en memoria los resultados más pedidos de la base de datos, muchas veces en una herramienta como Redis. La base de datos tiene los datos más usados en RAM en vez de en disco. Hasta el procesador tiene su propia caché de CPU. Cada capa se ahorra un viaje a algo más lento.

Lo difícil es saber cuándo una copia guardada quedó vieja. Si un precio cambia pero la caché sigue teniendo el anterior, la gente ve el precio equivocado. Las respuestas típicas son darle a cada dato un vencimiento (un TTL, time to live) o borrarlo de la caché cada vez que cambia el original, lo que se llama **invalidación de caché**. Hacerlo mal es una fuente clásica de bugs desconcertantes, y por eso hay un chiste entre programadores que dice que es uno de los dos problemas difíciles de la informática.

## Una analogía

Anotar el teléfono de un amigo en un papelito pegado en la heladera en vez de buscarlo en los contactos cada vez. Es mucho más rápido, hasta que tu amigo cambia de número y el papelito sigue ahí.

## Para quedarse

- Una caché guarda copias de resultados lentos de conseguir en un lugar rápido.
- Un hit se sirve desde la caché; un miss hace el trabajo lento y guarda el resultado.
- Navegadores, CDNs, aplicaciones, bases de datos y procesadores, todos cachean.
- Lo difícil es la invalidación: no servir datos viejos.

## Para seguir leyendo

- [Caché (informática) en Wikipedia](https://es.wikipedia.org/wiki/Caché_(informática))
- [Caché HTTP (MDN)](https://developer.mozilla.org/es/docs/Web/HTTP/Guides/Caching)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Sitio web](https://tidbit.legios.com.ar/es/website/): Un conjunto de páginas web bajo una dirección, guardadas en un servidor.
- [Navegador web](https://tidbit.legios.com.ar/es/web-browser/): La app que trae páginas web desde internet y las dibuja en tu pantalla.
- [CDN](https://tidbit.legios.com.ar/es/cdn/): Copias de un sitio guardadas en servidores por todo el mundo, cerca de quien las pide.
- [RAM](https://tidbit.legios.com.ar/es/ram/): La memoria de corto plazo de la computadora: rápida, chica y se borra al apagar.
- [CPU](https://tidbit.legios.com.ar/es/cpu/): El chip que ejecuta tus programas, una instrucción tras otra, muy rápido.
- [Caché de CPU](https://tidbit.legios.com.ar/es/cpu-cache/): Una memoria chiquita y rapidísima adentro del procesador, con lo que está por necesitar.
- [Bug](https://tidbit.legios.com.ar/es/bug/): Un error en un software que hace que se comporte distinto de lo que se buscaba.
