Я постарался собрать самые популярные подходы к реализации и рассмотрел их плюсы и минусы по важным параметрам: производительности, надёжности и стоимости + сложности реализации (тут и про трафик, и про стратегию обновления в целом).
От того, что именно мы планируем кэшить, будет и зависеть выбранный: ответ сети, изображения, модели, резы вычислений, где хранить (память, диск, БД) и как управлять инвалидацией.
Про концепты работы с кэшированием можно посмотреть и на GitHub: тут и вот здесь (уверен, что многие сталкивались и использовали это решение).
А ещё разобрал несколько популярных паттернов для реализации этой задачи.
Про TTL, версионирование и как лучше всего поступить при логауте - тоже есть.
Кстати, разобрался немного с mermaid-диаграммами, так что теперь будет больше красивых схем).
Знаю, что многие спрашивают это и в рамках секции по систем-дизайну, так что красивое и доступное структурирование никогда не помешает.
Весь код, все примеры и многое другое: 💰 На бусти и ⭐️ в телеграме.
🧠 Что вы получите ещё, подписавшись:
➡️Карта изучения Swift Concurrency (примеры, разбор каждого уровня, полезные советы)
➡️Вопросы на чтение кода (несколько уровней: простых, посложнее)
➡️Многопоточность
➡️DispatchQueue: практические вопросы
➡️Swift Concurrency
➡️Алгоритмы: терминология и примеры + путь Яндекс Coderun (разбор нескольких десятков задач)
➡️Память: ARC, side table, флаги, утечки
➡️Результаты зарплатного опроса в нашем канале + сравнение с европейскими реальными зарплатами в iOS
➡️Разбор подходов к анимациям и лучшие паттерны (классические способы, Metal, комбинации - все подкреплено кодом)
➡️Утечки памяти в Swift: что с ними делать, как предотвратить?
➡️Навигация в SwiftUI: типы, отличия, разбор неочевидных моментов
Внимание, цена изменилась, изменения будут и дальше - недавно преодолел важную отсечку по количеству материалов - поэтому если вы хотите расширить свой арсенал инструментов, рекомендую воспользоваться опцией в ближайшее время.
❤️ Спасибо всем, кто поддерживает iOS IQ - благодаря вам я нахожу силы на составление не только задач, но и кайфовых примеров, разборов и многого другого (и для вас все останется по-прежнему).
😃 iOS Dev
