Надёжная iOS система кеширования использует двухуровневую архитектуру: быстрый слой в памяти и постоянный слой на диске, которые работают вместе, балансируя скорость и эффективность хранения.
Используй NSCache как основной кеш в памяти. Он обеспечивает автоматическое вытеснение при нехватке памяти, управляемое ОС.
let memoryCache = NSCache<NSString, AnyObject>()
memoryCache.countLimit = 100
memoryCache.totalCostLimit = 50 * 1024 * 1024 // 50MB
Используй FileManager или базу данных типа SQLite/Realm как вторичный постоянный кеш. Элементы индексируются по уникальному идентификатору (например, хешу URL).
ETag или Last-Modified для проверки актуальности перед использованием закешированного контентаinvalidate(for key: String) для принудительного удаления конкретных записейОборачивай все операции чтения и записи в кеш конкурентную dispatch queue с барьером для записей:
let queue = DispatchQueue(label: "cache.queue", attributes: .concurrent)
func write(value: Any, for key: String) {
queue.async(flags: .barrier) { /* write */ }
}
func read(for key: String) -> Any? {
queue.sync { /* read */ }
}
NSCache автоматически вытесняет элементы на основе давления на память без необходимости ручной реализации политик вытеснения.
Новый — ещё не проверен сообществом
Вы