Для кеширования в памяти в Swift существует два основных стратегии:
URLCache — встроенное решение Apple для кеширования HTTP-ответов с учетом стандартных HTTP-заголовков кешаNSCache — гибкий, потокобезопасный контейнер для пользовательской логики кеширования с автоматическим вытеснением при нехватке памятиНастрой URLCache на уровне приложения, чтобы кешировать сетевые ответы автоматически:
URLCache.shared = URLCache(
memoryCapacity: 50 * 1024 * 1024, // 50 MB
diskCapacity: 200 * 1024 * 1024, // 200 MB
diskPath: "myCache"
)
Установи подходящую политику кеширования для каждого URLRequest, например returnCacheDataElseLoad или reloadRevalidatingCacheData, чтобы контролировать, когда используются кешированные данные.
Для некешируемых HTTP-данных оберни NSCache в обобщённый класс для хранения типизированных объектов:
countLimit и totalCostLimit, чтобы предотвратить неограниченный рост потребления памятиУправляй инвалидацией, используя одну из этих стратегий:
Cache-Control, ETag и Last-ModifiedДля кеширования изображений библиотеки вроде Kingfisher реализуют двухуровневый кеш — кеш в памяти для быстрого доступа и дисковый кеш для персистентности — обрабатывая инвалидацию по времени, предзагрузку и отмену запросов из коробки.
Установка countLimit и totalCostLimit на NSCache гарантирует, что истёкшие записи автоматически удаляются до достижения лимитов.
Новый — ещё не проверен сообществом
Вы