Виды кэширования в iOS: плюсы и минусы, стратегии обновления и интересные задачи
Я постарался собрать самые популярные подходы к реализации и рассмотрел их плюсы и минусы по важным параметрам: производительности, надёжности и стоимости + сложности реализации (тут и про трафик, и про стратегию обновления в целом).
От того, что именно мы планируем кэшить, будет и зависеть выбранный: ответ сети, изображения, модели, резы вычислений, где хранить (память, диск, БД) и как управлять инвалидацией.
Про концепты работы с кэшированием можно посмотреть и на GitHub: тут и вот здесь (уверен, что многие сталкивались и использовали это решение).
А ещё разобрал несколько популярных паттернов для реализации этой задачи.
Про TTL, версионирование и как лучше всего поступить при логауте - тоже есть.
Кстати, разобрался немного с mermaid-диаграммами, так что теперь будет больше красивых схем).
Знаю, что многие спрашивают это и в рамках секции по систем-дизайну, так что красивое и доступное структурирование никогда не помешает.
Весь код, все примеры и многое другое уже доступны в Notion