Синхронизация данных веб-приложения на JS с базой данных?

Привет
Есть веб-приложение на JS и возможность создания локальной базы данных.
И есть бекенд Python/Django (впринципе это не особо имеет значение).
Формат получаемых с сервера данных JSON, данные типа юзер, юзер группа, текст, путь к картинке итд, то есть заметки пользователей созданных в разных группах.
Заметки при загрузке разбиты по группам.
Каждый юзер при запуске приложения имеет список групп в которых он состоит, и список заметок относящихся к этим группам.
Эти заметки должны обновляться при рефреше страницы, или принудительном рефреше в приложении.

Вопрос в следующем, каким способом можно синхронизировать данные, чтобы избежать подгрузки листа целиком каждый раз?
Пока что нужно исключить постраничное/почастичное получение информации. Хорошо иметь список сразу.

Думал иметь версию списка при каждом изменении группы, и формировать общий список в зависимости от измененных групп. Но получается при любом изменении текста, грузить придется целиком группу.
Есть ли более умные способы?
  • Вопрос задан
  • 1239 просмотров
Пригласить эксперта
Ответы на вопрос 2
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
На стороне JS что сейчас используете? Фреймворки какие-нибудь?

Если это попытка сделать real-time приложение, то не проще ли для этого ноду подключить?
И получится, что у вас есть коллекция моделей с группами, при обновлении какой-то группы вы обновляете только 1 модель этой самой группы, не затрагивая всю коллекцию. Ну и в нужный момент сервер сам вам будет присылать обновленные данные по каждой из модели.

Ну и в целом из задачи не совсем понятно - у вас данные из каждой группы меняются практически одновременно и постоянно? Каким образом заметки юзера сами по себе изменяются без участия самого юзера?
Ответ написан
@rozochkin Автор вопроса
Пока что временное решение такое:
-Каждая заметка имеет дату модификации

-При первом запросе получаем клиентов все заметки, и серверную дату синхронизации
-Сохраняем заметки в локальную бд

-По истечение 10 минут, отправляем запрос с нашей последней датой синхронизации
-На сервере фильтруем что изменено после нее
-Получаем только измененные данные
-Апдейтим данные в локальной базе + добавляем новые

Возможно еще при каждом изменении заметки менять общую версию базы/группы, и отправлять вместо даты эту версию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы