Visión general

En informática, una caché es un área de almacenamiento temporal diseñada para acelerar el acceso a datos o resultados que se usan con frecuencia. La idea básica consiste en mantener una copia de información costosa de obtener —por cálculo, por tiempo de acceso o por coste— en un medio de acceso más rápido. Cuando un cliente solicita esos datos, el sistema consulta primero la caché y, si la copia está disponible, entrega esa copia en lugar de volver a calcular o recuperar el original. Este mecanismo reduce la latencia perceptible y la carga sobre recursos lentos o limitados.

Características y componentes

Las cachés suelen organizarse en bloques u objetos y cuentan con varios elementos clave: espacio de almacenamiento limitado, una política para decidir qué datos almacenar y otra para elegir qué entradas eliminar cuando hacen falta más recursos. Además se usan índices o tablas de búsqueda para localizar rápidamente entradas en la caché. Su diseño busca equilibrio entre tamaño, coste y tiempo de búsqueda: a mayor capacidad suele aumentar también la complejidad y la latencia interna de la propia caché.

Tipos y ejemplos

Existen múltiples formas de caché según su ubicación y propósito. Entre las más comunes están:

  • Caché de CPU: niveles L1, L2 y L3 cerca del procesador para acelerar instrucciones y datos de uso frecuente.
  • Caché de disco y sistema de archivos: mantiene bloques leídos desde almacenamiento persistente para reducir accesos a disco.
  • Caché web y proxy: almacena respuestas HTTP para servir contenido estático sin contactar al servidor origen.
  • Caché de aplicaciones y memoria intermedia: estructuras en memoria (por ejemplo, en bases de datos o en frameworks) que guardan resultados de consultas o cálculos.

Para ampliar información técnica y ejemplos, ver recursos introductorios y guías prácticas como tutoriales o documentación de bibliotecas específicas (ver más).

Localidad de referencia y por qué funciona

Las cachés se benefician de la localidad de referencia, una propiedad observada en muchos programas donde los accesos a datos o instrucciones tienden a concentrarse en regiones cercanas en espacio o en tiempo. Hay dos formas: localización temporal (mismo dato requerido de nuevo en poco tiempo) y localización espacial (acceder a datos contiguos). Gracias a esas tendencias, una copia en caché tiene altas probabilidades de ser reutilizada antes de quedar obsoleta.

Políticas de reemplazo y coherencia

Cuando la caché está llena debe elegirse una entrada a expulsar. Las estrategias habituales son:

  • LRU (Least Recently Used): se elimina la entrada menos recientemente usada.
  • LFU (Least Frequently Used): basada en la frecuencia de acceso.
  • FIFO (First In, First Out): se expulsa la más antigua.
  • Aproximaciones aleatorias o hibridas: simplifican costes de mantenimiento.

Además, en sistemas donde los datos pueden modificarse existe el problema de coherencia: la copia en la caché puede diferir del original. Para mitigarlo se emplean políticas como escritura inmediata (write-through), escritura diferida (write-back) y mecanismos de invalidación y sincronización. Las decisiones dependen de requisitos de consistencia, rendimiento y coste.

Diferencias con búferes y consideraciones de diseño

Un búfer y una caché pueden parecer similares, pero conceptual y de uso difieren. Un búfer se emplea para acomodar datos entre productores y consumidores con conocimiento explícito de la aplicación; típicamente la gestión del búfer es responsabilidad del usuario o del sistema que produce/consume los datos. En cambio, una caché suele ser transparente para el cliente: mejora el rendimiento sin que el solicitante tenga que gestionar directamente las copias. Esta distinción influye en la política de coherencia, en quién toma decisiones sobre reemplazo y en la complejidad de implementación.

Usos, beneficios y ejemplos prácticos

Las cachés son omnipresentes: aceleran la ejecución de programas en CPU, reducen latencia en servidores web, alivian carga en bases de datos y permiten una experiencia de usuario más fluida en aplicaciones móviles y de escritorio. Algunos ejemplos concretos: almacenar páginas web estáticas en un proxy, guardar fragmentos de resultados de consultas frecuentes en una base de datos en memoria, o mantener en caché thumbnails de imágenes para reducir tiempo de renderizado. Para casos de estudio y mejores prácticas consulte guías de rendimiento y documentación especializada.

El diseño de una caché requiere equilibrar tamaño, velocidad, coste y consistencia. Un uso correcto puede mejorar el rendimiento medio de un sistema de manera notable; un mal diseño puede introducir incoherencias, sobrecostes o incluso empeorar la latencia en ciertas cargas de trabajo.