Disk Cache: qué es, caché de disco iOS y principios de funcionamiento

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

Disk Cache es un mecanismo para almacenar temporalmente datos en el disco del dispositivo, permitiendo a las aplicaciones iOS acelerar el acceso repetido a recursos previamente cargados. Según Apple Developer Documentation, 2024, Disk Cache reduce el uso de red, disminuye la carga de la batería y permite el funcionamiento de la aplicación en modo offline. iOS proporciona varios mecanismos de almacenamiento en caché incorporados: URLCache para solicitudes de red, NSCache para memoria RAM e implementaciones personalizadas a través del directorio Caches.

Puntos clave

  • Disk Cache — almacenamiento de datos en disco para acelerar el acceso repetido y reducir el tráfico
  • URLCache — mecanismo integrado de almacenamiento en caché de solicitudes HTTP en iOS
  • Directorio Caches — un directorio Sandbox dedicado para datos temporales de la aplicación
  • Invalidación de caché es crítica para la actualidad de los datos — estrategias por tiempo, evento y versión
  • El sistema puede limpiar el caché cuando falta espacio en disco — el caché no debe contener datos irremplazables

¿Qué es Disk Cache en iOS?

Disk Cache es una tecnología para almacenar temporalmente datos en el almacenamiento permanente del dispositivo (memoria flash) con el fin de acelerar solicitudes posteriores a los mismos datos. A diferencia del caché RAM, Disk Cache conserva los datos después de reiniciar la aplicación e incluso el dispositivo.

iOS proporciona dos niveles principales de almacenamiento en caché: volátil (NSCache, memoria) y basado en disco (URLCache, sistema de archivos). El caché de disco es de 10 a 100 veces más lento que el volátil, pero significativamente más rápido que una solicitud de red — la diferencia puede ser de 2 a 3 órdenes de magnitud. La estrategia óptima utiliza un caché de dos niveles: memoria para datos calientes y disco para datos fríos.

Según Apple Performance Optimization Guide, 2023, un Disk Cache correctamente configurado reduce el tiempo de carga de contenido en un 60–80% para vistas repetidas y disminuye el consumo de tráfico en un 40–70%. Para aplicaciones con contenido multimedia (imágenes, video, audio), el almacenamiento en caché es un factor crítico de UX.

URLCache: mecanismo integrado de almacenamiento en caché

URLCache es una clase integrada de Foundation que implementa un caché combinado para solicitudes de URLSession. Guarda automáticamente las respuestas del servidor en disco y memoria, gestionando el tamaño del caché y las políticas de invalidación basadas en cabeceras HTTP como Cache-Control, Expires y ETag.

swift
import Foundation

let cache = URLCache(
    memoryCapacity: 50 * 1024 * 1024,
    diskCapacity: 200 * 1024 * 1024,
    diskPath: "network-cache"
)

URLCache.shared = cache

let config = URLSessionConfiguration.default
config.urlCache = cache
config.requestCachePolicy = .returnCacheDataElseLoad

let session = URLSession(configuration: config)

Políticas de almacenamiento en caché de URLCache determinan cuándo usar datos en caché y cuándo realizar una nueva solicitud. Las principales políticas incluyen: useProtocolCachePolicy (según cabeceras del servidor), reloadIgnoringLocalCacheData (siempre del servidor), returnCacheDataElseLoad (caché primero), returnCacheDataDontLoad (solo caché — modo offline).

Cache-Control es una cabecera HTTP que el servidor envía junto con la respuesta, especificando max-age (tiempo de vida en segundos), must-revalidate (verificar actualidad), no-cache (no usar sin verificación) y no-store (no almacenar en caché). iOS respeta estrictamente estas cabeceras automáticamente al usar URLCache con la política useProtocolCachePolicy.

Estrategias personalizadas de almacenamiento en caché e invalidación

Caché personalizado es necesario cuando el URLCache integrado es insuficiente — para almacenar imágenes procesadas, modelos de datos serializados o resultados de cálculos. En tales casos, los desarrolladores crean su propio sistema de almacenamiento en caché basado en el directorio Caches del Sandbox de la aplicación.

swift
class DiskCache<T: Codable> {
    private let cacheDir: URL
    private let encoder = JSONEncoder()
    private let decoder = JSONDecoder()

    init() {
        let paths = FileManager.default
            .urls(for: .cachesDirectory,
                     in: .userDomainMask)
        cacheDir = paths[0].appendingPathComponent(
            "data-cache", isDirectory: true
        )
        try? FileManager.default
            .createDirectory(at: cacheDir,
                             withIntermediateDirectories: true)
    }

    func set(value: T, for key: String) {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        if let data = try? encoder.encode(value) {
            try? data.write(to: url)
        }
    }

    func get(for key: String) -> T? {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        guard let data = try? Data(contentsOf: url) else { return nil }
        return try? decoder.decode(T.self, from: data)
    }

    func clearAll() {
        try? FileManager.default
            .removeItem(at: cacheDir)
    }
}

Estrategias de invalidación de caché determinan cuándo los datos almacenados se consideran obsoletos: TTL (Time-To-Live) — los datos viven un tiempo fijo después de la escritura; basada en eventos — invalidación por evento (por ejemplo, actualización de datos en el servidor); basada en versión — invalidación al cambiar la versión de API o el formato de datos; LRU (Least Recently Used) — eliminación automática de las entradas menos utilizadas al superar el límite de tamaño.

Regla práctica: TTL es adecuado para noticias y contenido que se vuelve obsoleto de manera predecible. Basada en eventos para datos gestionados por el servidor a través de notificaciones push. Basada en versión para configuraciones y cachés de modelos de datos. LRU es una opción universal para archivos multimedia con espacio de disco limitado.

Rendimiento y limitaciones del caché

El rendimiento de Disk Cache se mide mediante el hit ratio — el porcentaje de solicitudes satisfechas desde el caché sin llamada de red. Un hit ratio típico para un caché de imágenes bien configurado es del 70–90%, para respuestas API — 40–60%, para video en streaming — 30–50%.

Tipo de datosHit ratio típicoTamaño de caché recomendado
Imágenes70–90%100–500 MB
Respuestas API JSON40–60%10–50 MB
Video/Audio30–50%500 MB — 1 GB
Fuentes y recursos90–99%5–20 MB
Contenido web50–70%50–200 MB

Limitaciones de Disk Cache en iOS: el sistema puede eliminar el contenido del directorio Caches en cualquier momento cuando falte espacio en disco. Este comportamiento no es configurable — iOS decide cuándo y qué archivos en caché eliminar. Por lo tanto, el caché no debe contener datos que no puedan recuperarse de la red u otras fuentes.

Impacto en la memoria flash: la escritura frecuente en Disk Cache acelera el desgaste del almacenamiento flash. iOS utiliza TRIM y wear leveling para minimizar el desgaste, pero se recomienda a los desarrolladores evitar escrituras excesivas: no actualizar el caché más de una vez cada 5 minutos para el mismo archivo; agrupar escrituras pequeñas; usar NSCache para datos temporales que no necesitan persistir en disco.

Mejores prácticas de almacenamiento en caché en iOS

Caché de dos niveles es la arquitectura estándar para aplicaciones iOS: memoria (NSCache) para datos de acceso frecuente, y disco (URLCache o personalizado) para datos que deben persistir entre sesiones. Tiempo de vida en memoria — minutos, en disco — horas o días.

Almacenamiento en caché de imágenes: utiliza bibliotecas especializadas (Kingfisher, SDWebImage, Nuke) que implementan un caché de dos niveles con invalidación automática, gestión de memoria y escritura asíncrona en disco. Implementar un caché de imágenes personalizado requiere considerar decodificación, espacio de color y escalado.

Caché y seguridad: no almacenes datos confidenciales (contraseñas, tokens, datos personales) en disco sin cifrado. URLCache no cifra datos por defecto — usa NSFileProtection o cifrado a nivel de aplicación para contenido sensible. Para solicitudes de red autorizadas, usa la política .reloadIgnoringLocalCacheData.

Monitoreo del caché: realiza un seguimiento del hit ratio, el tamaño actual del caché y las escrituras por minuto. Si el hit ratio cae por debajo del 30%, el caché es ineficiente y requiere revisión de la estrategia o aumento de tamaño. Según Point-Free (2024), el monitoreo del caché es una de las prácticas de optimización de rendimiento más subestimadas en aplicaciones iOS.

Preguntas frecuentes

¿Qué es Disk Cache en iOS?

Disk Cache es una tecnología para almacenar datos en el disco del dispositivo para acelerar el acceso repetido. El URLCache integrado de iOS almacena en caché las respuestas HTTP, y los desarrolladores pueden crear cachés personalizados a través del directorio Caches.

¿En qué se diferencia Disk Cache de RAM Cache?

RAM Cache (NSCache) almacena datos en la memoria RAM — más rápido, pero se pierde al reiniciar la aplicación. Disk Cache es más lento pero persiste entre sesiones. La estrategia óptima utiliza ambos niveles: memoria para datos calientes, disco para datos fríos.

¿Puede iOS eliminar mi caché?

, el sistema puede eliminar el contenido del directorio Caches en cualquier momento cuando falte espacio en disco. Por lo tanto, nunca almacenes datos irrecuperables en el caché. Usa el directorio Documents para documentos de usuario.

¿Cómo elegir el tamaño correcto de caché?

El tamaño del caché depende del tipo de datos: 100–500 MB para imágenes, 10–50 MB para respuestas API, hasta 1 GB para video. Monitorea el hit ratio — si cae por debajo del 50%, aumenta el tamaño del caché o cambia la estrategia de invalidación.

¿Cómo limpiar el caché en una aplicación iOS?

URLCache.removeAllCachedResponses() limpia el caché integrado. Para caché personalizado, elimina archivos del directorio Caches a través de FileManager. Siempre proporciona al usuario la opción de limpiar el caché a través de la configuración de la aplicación.

Resumen

  • Disk Cache — almacenamiento temporal de datos en disco para acceso repetido más rápido y tráfico reducido
  • URLCache — almacenamiento en caché de solicitudes HTTP integrado en Foundation con soporte Cache-Control
  • Directorio Caches — directorio Sandbox para datos temporales, limpiado por el sistema cuando falta espacio
  • Invalidación se realiza por TTL, evento, versión o LRU — la elección depende del tipo de datos
  • Hit ratio — métrica clave de eficiencia del caché: 70%+ para imágenes, 40–60% para API
  • Caché de dos niveles (RAM + Disco) — arquitectura estándar para aplicaciones iOS
  • Seguridad — los datos confidenciales no deben almacenarse en caché en disco sin cifrado

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