Как загрузить данные ОБЕИХ из кеша и из сети с помощью Alamofire?

Я пытаюсь использовать кеширование, чтобы сделать мое приложение iOS более быстрым. По каждому запросу я бы хотел:

  1. вернуть данные из кеша, если они есть
  2. при подключении к Интернету загружать данные из API в фоновом режиме
  3. если данные из API отличаются от того, что уже было в кеше, обновите кеш и верните эти данные снова, чтобы пользовательский интерфейс можно было обновить

Я знаю, что если в кеше уже есть какие-то данные и я подключен к Интернету, может произойти 2 последовательных вызова моего кода ответа, но это то, что я хочу: первый набор данных, потенциально не -date, возвращенный из кеша, дает мне что-то сразу, а второй набор данных гарантирует, что все обновлено.

Все подходы к кэшированию, которые я использовал до сих пор, позволяют мне реализовать подход ЛИБО / ИЛИ исключительно на основе возраста кеша. Прямо сейчас я использую AlamofireURLCache5. Можно ли реализовать такой кеш с помощью Alamofire 5 или мне нужно реализовать его вручную?

РЕДАКТИРОВАТЬ: мне сказали, что я пытаюсь сделать, это называется кешем Stale-While-Revalidate.

1 ответ

Alamofire поддерживает только URLCache и функциональность, предоставляемая URLSession. Вы можете реализовать эквивалентные шаблоны выше Alamofire, возможно, в таком типе, который сохраняет последнее успешное значение при обновлении из сети.

Кстати, вы, вероятно, не хотите, чтобы ваше состояние "при подключении к Интернету". Вместо этого вы должны просто запросить ресурс и обновить его, если это удастся.

Другие вопросы по тегам