Caches Directory: qué es, gestión de caché y limpieza de datos

Autor: IT Sectr Publicado: 2026-07-10 Tiempo de lectura: 10 min

Caches Directory es un directorio dentro del sandbox de la aplicación iOS diseñado para almacenar datos temporales que pueden restaurarse o recargarse desde la red. Según Apple File System Basics (2024), el sistema puede eliminar archivos del Caches Directory en cualquier momento para liberar espacio en disco — la aplicación debe manejar correctamente la ausencia de estos archivos y restaurarlos cuando sea necesario. A diferencia del Documents Directory, los datos de Caches no se incluyen en las copias de seguridad de iCloud e iTunes, lo que reduce la carga en el almacenamiento en la nube del usuario.

Puntos Clave

  • Caches Directory es un almacenamiento temporal para datos que pueden restaurarse desde la red o recrearse.
  • El sistema iOS puede en cualquier momento eliminar archivos de Caches cuando falta espacio en el dispositivo.
  • Los datos de Caches no se incluyen en las copias de seguridad de iCloud e iTunes.
  • La ruta al directorio se obtiene mediante NSCachesDirectory o FileManager.urls(for: .cachesDirectory).
  • La principal diferencia con Documents: Caches no está diseñado para datos de usuario cuya pérdida sea crítica.

¿Qué es Caches Directory en iOS?

Caches Directory es un directorio dentro del sandbox de la aplicación iOS optimizado para almacenar datos que pueden restaurarse cuando sea necesario. A diferencia del Documents Directory, Caches no está diseñado para datos de usuario — es un almacenamiento temporal para acelerar el rendimiento de la aplicación.

iOS utiliza el Caches Directory para almacenar respuestas de red en caché, imágenes precargadas, objetos serializados y datos que la aplicación puede restaurar. Los desarrolladores no deben confiar en el almacenamiento a largo plazo en este directorio.

Según Apple WWDC 2020, aproximadamente el 40% de las aplicaciones iOS usan el Caches Directory para almacenar imágenes y datos de red en caché, mientras que el 25% de los desarrolladores colocan incorrectamente en Caches datos que deberían estar en Documents o Application Support por no comprender las diferencias entre estos directorios.

Una propiedad crítica de Caches: la aplicación debe manejar correctamente las situaciones en las que un archivo de caché ha sido eliminado por el sistema. Si eliminar la caché rompe la funcionalidad de la aplicación, entonces los datos se almacenan en el directorio incorrecto.

Cómo obtener la ruta al Caches Directory

En Swift, la ruta al Caches Directory se obtiene mediante el método estándar de FileManager con .cachesDirectory. Esta es una operación simple utilizada en prácticamente todas las aplicaciones iOS que trabajan con datos de red.

swift
import Foundation

let fileManager = FileManager.default
guard let cachesURL = fileManager.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first else { return }

// Save cached JSON
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C utiliza NSSearchPathForDirectoriesInDomains con NSCachesDirectory. Aunque Apple recomienda la API Swift, el código Objective-C con Caches Directory sigue siendo funcional y tiene soporte.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSCachesDirectory,
    NSUserDomainMask,
    YES
);
NSString *cachesPath = paths.firstObject;
NSString *cacheFile = [cachesPath stringByAppendingPathComponent:@"feed_cache.plist"];

Los proyectos Swift deben preferir la API basada en URL: es type-safe y se integra mejor con frameworks modernos como SwiftUI y Combine.

Qué datos almacenar en Caches

Caches Directory es óptimo para varias categorías de datos que la aplicación usa para acelerar el rendimiento, pero no es la única fuente de verdad. Elegir los datos correctos para el caché afecta directamente la UX y el rendimiento de la aplicación.

Respuestas de red en caché

Respuestas JSON de APIs, datos de feeds de noticias, listas de objetos — todo lo que la aplicación pueda descargar nuevamente del servidor. Usa URLCache para el caché automático de respuestas HTTP o guarda manualmente objetos serializados.

Imágenes y archivos multimedia

Imágenes descargadas de la red son el caso de uso más común del Caches Directory. Librerías como SDWebImage y Kingfisher guardan las imágenes en caché en Caches por defecto.

Tipo de datoAdecuado para CachesPeríodo de retención
JSON respuestas APIHasta limpieza del sistema
Imágenes de redHasta limpieza del sistema
Logs de depuraciónCondicionalMejor en tmp
Partidas guardadasNoSolo Documents
Configuraciones de appNoApplication Support

Si los datos no pueden restaurarse, no pertenecen a Caches. Este es el criterio más simple: imagina que mañana el sistema elimina todos los archivos de Caches. Si la aplicación sigue funcionando correctamente, los datos están almacenados correctamente.

Cómo gestiona el sistema la limpieza de caché

iOS gestiona automáticamente la limpieza del Caches Directory, pero los desencadenantes y algoritmos exactos no están documentados por Apple. Se sabe que el sistema puede eliminar archivos de Caches cuando falta espacio en disco, así como cuando la función Offload Unused Apps está activa.

El proceso de limpieza es transparente para la aplicación: el sistema elimina archivos sin notificación. La aplicación debe verificar la existencia del archivo antes de leerlo y crearlo de nuevo si está ausente. No depender del almacenamiento a largo plazo es un requisito clave al trabajar con Caches.

Según el artículo de Apple “File System Basics” (2024), la aplicación no debe esperar que los archivos en el Caches Directory estén disponibles entre sesiones. Se recomienda a los desarrolladores implementar un mecanismo de respaldo: si falta un archivo en caché, descargar los datos de la red y guardarlos nuevamente en Caches.

Un escenario aparte es la descarga de aplicaciones (Offload). Cuando esta función se activa, iOS elimina la aplicación pero conserva su Documents Directory. El Caches Directory se elimina en el proceso. Un usuario que restaura la aplicación no tendrá datos en caché — la aplicación debe descargarlos nuevamente.

Caches Directory vs Temporary Directory

La diferencia entre los directorios Caches y Temporary (tmp) a menudo causa confusión entre los desarrolladores. Ambos directorios almacenan datos temporales, pero con diferentes garantías de tiempo de vida y propósito.

CaracterísticaCaches DirectoryTemporary Directory
Tiempo de vidaDe sesión a sesión (no garantizado)Solo dentro de una sesión
Limpieza del sistemaCuando falta espacioAl finalizar la sesión o reiniciar
PropósitoCaché para acelerar el rendimientoDatos muy temporales
EjemploImágenes en cachéArchivo temporal antes de exportar
Copia de seguridadNoNo

Elige Caches si es beneficioso conservar datos entre inicios de la aplicación pero pueden restaurarse. Usa tmp si los datos solo se necesitan dentro de la sesión actual y no tienen valor después de que la aplicación finalice.

Mejores prácticas con Caches

Trabajar con el Caches Directory requiere seguir varias reglas que ayudan a evitar la pérdida de datos, comportamientos inesperados de la aplicación y problemas de rendimiento.

Verifica siempre la existencia del archivo antes de leer

FileManager.fileExists(atPath:) debe llamarse antes de cada lectura desde Caches. Si falta el archivo, carga los datos desde la fuente original y guárdalos en caché. Nunca asumas que un archivo en Caches existe.

Limita el tamaño del caché

Establece un tamaño máximo para el Caches Directory en tu aplicación. Por ejemplo, un límite de 50 MB para imágenes y 10 MB para respuestas JSON. Cuando se supere el límite, elimina los archivos más antiguos por fecha de modificación.

swift
import Foundation

func trimCache(to maxSizeBytes: Int) {
    let cachesURL = FileManager.default
        .urls(for: .cachesDirectory, in: .userDomainMask)
        .first!

    guard let enumerator = FileManager.default
        .enumerator(
            at: cachesURL,
            includingPropertiesForKeys: [.fileSizeKey, .contentModificationDateKey]
        )
    else { return }

    // Enumerate and remove old files
    // when exceeding size limit
}

Seguir estas prácticas garantiza que la aplicación funcione correctamente independientemente de las acciones de limpieza del caché del sistema, y los usuarios no se encuentren con pérdidas inesperadas de datos.

Preguntas Frecuentes

¿El sistema notifica a la aplicación antes de limpiar el Caches Directory?

No, iOS no envía notificaciones antes de eliminar archivos de Caches. El proceso de limpieza es completamente transparente para la aplicación. La única forma de saber si un archivo fue eliminado es al intentar leerlo — FileManager devuelve nil o lanza un error, y la aplicación debe manejar esta situación.

¿Puede el usuario limpiar manualmente el Caches Directory?

Los usuarios no tienen acceso directo al Caches Directory a través de Files o iTunes. Sin embargo, pueden limpiar el caché de todas las aplicaciones mediante Ajustes > General > Almacenamiento, seleccionar una aplicación específica y pulsar “Descargar App.” iOS también puede limpiar el caché automáticamente cuando falta espacio.

¿En qué se diferencia URLCache del guardado manual en Caches Directory?

URLCache es un mecanismo integrado de caché de solicitudes HTTP de Foundation. Guarda y carga automáticamente respuestas en caché, utilizando el Caches Directory internamente. El guardado manual ofrece más control: puedes elegir el formato, cifrar datos y gestionar el tiempo de vida de cada archivo individualmente.

¿Qué sucede con el Caches Directory al actualizar la aplicación?

Al actualizar la aplicación a través de la App Store, el Caches Directory se conserva. Sin embargo, el sistema puede eliminar su contenido si la nueva actualización requiere más espacio para instalarse. Los desarrolladores no deben confiar en la persistencia de Caches después de una actualización — esta es una razón adicional para implementar un mecanismo de respaldo.

¿Cómo deshabilitar el caché automático para NSURLSession?

Establece URLCache en nil para una sesión NSURLSession específica o usa la política de caché .reloadIgnoringLocalCacheData. También puedes crear una URLSessionConfiguration con un caché vacío: sessionConfiguration.urlCache = nil. Esto es útil para datos que siempre deben estar actualizados.

Resumen

  • Caches Directory es un almacenamiento temporal para datos que pueden restaurarse desde la red o recrearse.
  • El sistema iOS puede en cualquier momento eliminar archivos de Caches sin notificar a la aplicación.
  • Los datos de Caches no se incluyen en las copias de seguridad de iCloud e iTunes, ahorrando espacio.
  • La ruta al directorio es FileManager.urls(for: .cachesDirectory) en Swift o NSSearchPathForDirectoriesInDomains en Objective-C.
  • En Caches se almacenan imágenes en caché, respuestas JSON de API y otros datos recuperables.
  • A diferencia de tmp, Caches puede conservar datos entre inicios, pero sin garantías.
  • Siempre verifica la existencia del archivo antes de leer desde Caches e implementa carga de respaldo.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también