Добавить объявление

Кэширование в Swift: как сделать приложение быстрее

Кэширование - мощный инструмент, который почему-то часто упускают из виду. А ведь это идеальное решение для временного хранения данных без лишних запросов к сети или базе.

Что такое NSCache:


NSCache - встроенный в iOS механизм кэширования, который автоматически освобождает память при нехватке ресурсов. Но есть нюанс: он работает только с классами, наследующими NSObject.

Решение: обертка вокруг NSCache, которая позволяет использовать любые типы данных, включая структуры.

final class Cache {
private let wrapped = NSCache()
// реализация подписки, вставки и удаления
}

Жизненный цикл данных:


Чтобы избежать устаревших данных, добавим автоматическую инвалидацию по времени:

struct Entry {
let value: Value
let expirationDate: Date // Удаляем данные после истечения срока
}

Сохранение на диск:


Для оффлайн-доступа к данным расширяем кэш поддержкой Codable и сохраняем в файлы:

extension Cache: Codable where Key: Codable, Value: Codable {
func saveToDisk(name: String) throws {
let data = try JSONEncoder().encode(self)
try data.write(to: cachesDirectory.appendingPathComponent(name))
}
}

Когда это полезно:


  • Повторное использование данных (например загруженных товаров в интернет магазине).

  • Оффлайн-режим: доступ к последним данным после перезапуска.

  • Оптимизация производительности: меньше запросов к серверу.

Вывод:


Кэширование - не просто «сохранить и забыть». Это баланс между скоростью, актуальностью данных и управлением памятью.
22.08.2025 35 431