Надеюсь, что название выбрано достаточно хорошо, чтобы задать этот вопрос.Выбор хранилища и кеширования
Не стесняйтесь редактировать, если нет, и примите мои извинения.
В настоящее время я размещаю приложение, взаимодействующее с Интернетом.
Объяснение основного потока программы:
Пользователь входит в UserID в мою программу, которая затем используется для доступа к нескольким XML-файлы через Интернет:
http://example.org/user/userid/?xml=1
Этот файл содержит несколько ID продуктов, которыми владеет пользователь в DRM-системе. Затем этот список используется для доступа к статистике и информации о взаимодействии пользователей с продуктом:
http://example.org/user/appid/stats/?xml=1
Это также содержит ссылки на различные изображения, которые являются специфическими для данного приложения. И они могут измениться в любое время и должны быть загружены для отображения в приложении.
Здесь начинается ужас, по крайней мере для меня: D.
1.) Как хранить эту информацию на ПК пользователя?
Я думал об использовании каталога для идентификатора пользователя, а затем вложенных папок с приложением для кэширования изображений и xml-файлов для их загрузки по требованию. Я также думал об использовании zipfile при использовании той же структуры.
Или можно использовать локальный db-подобный sqlite для этого?
Среднее количество приложений может быть около ~ 100-300, а также статистику и изображения для каждого приложения в основном 5-700.
2.) Когда следует обновлять контент?
Плохо, сайт, откуда эти данные загружены, или, скорее, xmls, не содержит временных меток, когда он был обновлен/изменен в последний раз. Поэтому мне нужно будет хэшировать все файлы и сравнивать их в тот момент, когда пользователь обращается к этим данным, что может занять слишком много времени, потому что это веб-сайт. Хорошо, есть тайм-ауты, но мне нужно заблокировать доступ к контенту, пока данные не будут загружены и обработаны, или не произойдет тайм-аут. В обоих случаях приложение не будет доступно для короткого или, возможно, даже долгого времени, и я хочу этого избежать. I может позволить пользователю делать обновление вручную, когда он в этом нуждается, но тогда я надеялся, что для этого есть несколько лучших методов.
Особенно с вышеупомянутыми номерами приложений и прочее.
Спасибо за чтение и все это, и, пожалуйста, не стесняйтесь спрашивать, не забыл ли я что-то объяснить.
Спасибо за ответ Стив. –