Проверьте, нужно ли обновлять локальные данные (веб-служба)

У меня есть приложение для Android, и мне нужно улучшить производительность и запросить Интернет. У меня также есть веб-сервис в .net.

Когда я вхожу в профиль человека, мне всегда нужно снова загружать профиль, но я хочу проверить, нужно ли мне загружать профиль (новые данные).

Я думаю, что нужно создать столбец «Дата», и всякий раз, когда кто-то изменяет профиль, обновляйте столбец «Дата». В Android загрузите из локальной базы данных и проверьте, совпадает ли «дата обновления» локальной базы данных с удаленной базы данных (веб-службы) и если данные не загружаются из API.

это правильный способ сделать? какой подход лучше? может быть, используя int для проверки «версии профиля»?

благодарю вас


person Antonio Henrique    schedule 25.07.2017    source источник


Ответы (1)


Вы не можете знать на локальном устройстве, что происходит на веб-сервере, не связавшись с ним. Я бы кэшировал профиль в кеше памяти или базе данных Android и вызывал веб-службу в фоновом режиме, чтобы проверить наличие новых данных.

Я бы также кэшировал профиль на сервере, в веб-службе, потому что это повысит производительность для других потребителей веб-службы, если она у вас есть (например, веб-приложение). Когда кто-то меняет профиль (внутри вашего метода POST или PUT, не забудьте сделать кеш недействительным). Когда вы получаете новый профиль из базы данных обновлений веб-сервиса или кешируете его, то снова в android.

person Vlado Pandžić    schedule 25.07.2017
comment
Вы не можете знать на локальном устройстве, что происходит на веб-сервере, не связавшись с ним, да, но мой вопрос не в этом... мой вопрос: я могу создать столбец для проверки, нужно ли мне получать новые данные из API? если этот столбец отличается (локальный - 01-01-2017, а API - 02-02-2017), я получаю от API, если это то же самое, хорошо... ничего не делать. - person Antonio Henrique; 25.07.2017
comment
В вашей базе данных (SQL, mySQL) на вашем сервере вы можете иметь свойство LastDate (дата последнего изменения в профиле), а на мобильном устройстве вы проверите, соответствуют ли эти данные LastDate с сервера, прежде чем запрашивать полный профиль? Вы можете сделать это, но, конечно же, вам потребуется туда и обратно на сервер. - person Vlado Pandžić; 25.07.2017
comment
да, но мне не нужно всегда загружать полный профиль (20 свойств), и мне нужно отправить только 1 свойство, но это хороший подход? - person Antonio Henrique; 25.07.2017
comment
Это определенно с точки зрения производительности очень хорошо. Единственным недостатком является то, что у вас есть специальные API для проверки актуальности данных. Это требует от вас дополнительных усилий как программиста, поэтому с точки зрения обслуживания может быть сложно, в зависимости от того, насколько велик ваш общий API. - person Vlado Pandžić; 25.07.2017