Как настроить URLSessionConfiguration, чтобы кешированные данные сохранялись всего 5 минут (серверная часть не обрабатывает время истечения срока действия)

Я хотел бы кэшировать данные, которые я получаю из своих запросов 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 и веб-сервисов.


person Community    schedule 05.11.2018    source источник
comment
Возможный дубликат Как установить срок действия кэша NSURLRequest?   -  person Kamran    schedule 05.11.2018
comment
Мой бэкэнд не обрабатывает (к сожалению) параметр Cache-Control, доступный в ответе заголовка HTTP при запросе данных.   -  person    schedule 05.11.2018
comment
Почему бы вам не использовать URLSessionConfiguration.ephemeral ?   -  person Vaibhav Parmar    schedule 21.12.2018