Как правильно кэшировать / обновлять управляемые данными приложения iPhone, которые используют удаленные базы данных?

0

Мое приложение очень управляется данными и часто нуждается в обновлении. В настоящее время база данных MySQL сбрасывается в XML файл через PHP, и когда приложение загружает его, этот файл загружается. Затем он загружает все значения в NSMutableArray внутри класса диспетчера данных, к которому можно получить доступ в любом месте приложения.

Вот и проблема: созданный файл XML составляет около 400 КБ, и это, по-видимому, занимает несколько минут для загрузки в сети EDGE и даже для некоторых людей в сети 3G. Поэтому в основном я ищу варианты правильного кэширования или оптимизации процесса загрузки приложений.

Моя текущая мысль - это нечто вроде того, что кэширует весь XML файл на жесткий диск iPhone, а затем просто обслуживает эти данные, когда пользователь перемещает приложение, и загружает новый XML файл в фоновом режиме. Проблема заключается в том, что пользователь теперь всегда будет видеть данные из предыдущего запуска, также представляется бесполезным загружать весь XML файл каждый раз, если было изменено только одно поле.

TL;DR: загрузка данных с iPhone очень медленно, как можно свести к минимуму этот эффект?

Теги:
iphone
iphone-sdk-3.0

2 ответа

1
Лучший ответ

Мое предложение состояло в том, чтобы кэшировать данные в базу данных SQLite на iPhone. Когда приложение запускается, вы синхронизируете базу данных SQLite с удаленной базой данных..., позволяя пользователю знать, что вы загружаете инкрементные данные в фоновом режиме.

Поступая таким образом, вы получаете следующее:

  • Пользователи могут сразу использовать приложение с устаревшими данными.
  • Вы даете понять, что новые данные приходят.
  • Вы сохраняете данные в более подходящем формате.

И как только самые последние данные будут загружены... пользователь увидит его.

  • 0
    Это то, что я хотел бы рассмотреть также. У этого есть дополнительный бонус использования основной структуры данных iPhone. Единственная проблема заключается в том, что это оплачиваемая работа, где очень низкий уровень риска, и я никогда не использовал базовые данные. Клиенту нужна опция, которую можно настроить за короткий промежуток времени, например, просто сохранить файл XML на диск (не нужно было бы переписывать код для заполнения массивов и показывать его в соответствующих частях приложение.)
2

Мне пришлось иметь дело с чем-то подобным в приложении, которое я разработал в течение лета.

Я решил решить начальную загрузку всех данных с сервера и поместить их в базу данных на клиенте вместе с номером ревизии.

Затем каждый раз, когда пользователь снова подключается, он отправляет номер версии на сервер, если номер версии меньше номера версии сервера, который он отправляет по новым данным (и только новым данным) с сервера, если его то он ничего не делает.

Это довольно просто и, похоже, для меня это очень хорошо.

У этого метода есть недостаток, который ваш сервер должен сделать немного больше обработки, чем обычно, но он практически ничего и намного лучше, чем потерянная полоса пропускания.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню