Как загрузить данные ОБЕИХ из кеша и из сети с помощью Alamofire?
Я пытаюсь использовать кеширование, чтобы сделать мое приложение iOS более быстрым. По каждому запросу я бы хотел:
- вернуть данные из кеша, если они есть
- при подключении к Интернету загружать данные из API в фоновом режиме
- если данные из API отличаются от того, что уже было в кеше, обновите кеш и верните эти данные снова, чтобы пользовательский интерфейс можно было обновить
Я знаю, что если в кеше уже есть какие-то данные и я подключен к Интернету, может произойти 2 последовательных вызова моего кода ответа, но это то, что я хочу: первый набор данных, потенциально не -date, возвращенный из кеша, дает мне что-то сразу, а второй набор данных гарантирует, что все обновлено.
Все подходы к кэшированию, которые я использовал до сих пор, позволяют мне реализовать подход ЛИБО / ИЛИ исключительно на основе возраста кеша. Прямо сейчас я использую AlamofireURLCache5. Можно ли реализовать такой кеш с помощью Alamofire 5 или мне нужно реализовать его вручную?
РЕДАКТИРОВАТЬ: мне сказали, что я пытаюсь сделать, это называется кешем Stale-While-Revalidate.
1 ответ
Alamofire поддерживает только
URLCache
и функциональность, предоставляемая
URLSession
. Вы можете реализовать эквивалентные шаблоны выше Alamofire, возможно, в таком типе, который сохраняет последнее успешное значение при обновлении из сети.
Кстати, вы, вероятно, не хотите, чтобы ваше состояние "при подключении к Интернету". Вместо этого вы должны просто запросить ресурс и обновить его, если это удастся.