Я хотел бы кэшировать данные, которые я получаю из своих запросов API.
Точнее, я хотел бы максимальное время жизни 5-10 минут для моих данных кеша.
Действительно, я работаю над погодным приложением, и мне не нужна база данных, а просто возможность повторно использовать данные из предыдущих запросов.
Например:
- Пользователь запрашивает данные прогноза для Нью-Йорка
- Пользователь запрашивает данные прогноза для Лондона
Теперь, если пользователь снова запрашивает Нью-Йорк, я хотел бы повторно использовать данные из предыдущего запроса. Данные о погоде обновляются каждые 15 минут на стороне сервера (поэтому достаточно 5-минутного кеша, навигация в приложении для приложения погоды не длится так долго).
Вот что у меня есть на данный момент:
let configuration = URLSessionConfiguration.default
configuration.requestCachePolicy = .returnCacheDataElseLoad
configuration.timeoutIntervalForRequest = TimeInterval(60)
configuration.timeoutIntervalForResource = TimeInterval(60)
let session = URLSession(configuration: configuration)
Проблема здесь в том, что если я запрашиваю данные о погоде, например, для Нью-Йорка, и добавляю город в свой любимый город. И затем, если я никогда не запускаю свое приложение в течение 2 дней, я загружаю кэшированные данные за 2 дня.
Я хотел бы настроить время истечения срока действия моего URLSessionConfiguration.
Примечание: все объекты моей модели получены из протокола Codable и веб-сервисов.