Какие существуют механизмы кэширования данных в мобильном приложении?
Посоветуйте мануалы/статьи по основным механизмам кэширования данных в мобильном приложении.
Хотелось бы в приложении поддерживать закэшированные данные, но чтобы они было максимально валидны.
P.S. Вопрос не про то как храненить данные, а про поддержку актуальности закэшированных.
Конкретно у меня стоит задача поддерживать в приложении актуальные данные, но проблема в том, что бекенд не готов для варианта №1 (ETag), поэтому и ищу другие пути.
Пока остановился на варианте: время валидности кэша = 5 мин, т.е. приложение будет пытаться получить данные каждый раз когда нужно, но если есть кэш, время жизни которого менее 5 минут, запрос на сервер не уйдет. Но эта схема мне не нравится. Не вижу разницы между 5 минут и 0 минут в данном случае и это печалит.
Именно в Android для этого есть SharedPreferences, очень выручает, либо в файл сохранить, либо в базе данных, на оф. сайте есть отдельный пункт для этого.
TODO: Здесь будут ворованные умные мысли, типа мои
Слово "валидны" не к месту.
Что кешируете? Данные Бэкенда? Картинки?
Предположу, что бэкенд данные.
Вот аналогичный вопрос на тостере с решением для андроид приложений.
Есть различные схемы поддержания актуальности данных полученных с сервера. Один из них я запостил ответом №1. Но есть другие варианты - периодически стучаться в сервер с таймаутом, либо установить время жизни кэша, либо еще что... На указанной вами ссылке ничего про это нет.
Периодически стучаться на сервер за данными.
Проверять по меткам не устарели ли данные. Но проверяет себя бэкенд, а не мобильный клиент.
Мобильный лишь получает данные и складывает в базу. Он не в курсе актуальные они или нет.
И на его стороне мудрить не нужно.
Ранее для кэширования всегда использовали ETag - передавали хэшкод сохранённой структуры и если у бекенда был такой же хэшкод, сервер отвечал 304. Данные списки различных ресурсов: текстов, переводов, вообще всего что в UI нужно отображать.