Эффективная синхронизация Django с localStorage (push-уведомления для большого количества данных JSON) - PullRequest
0 голосов
/ 12 октября 2019

У меня есть приложение, которое в значительной степени основано на чтении данных из базы данных. Бэкэнд написан на Django, и в настоящее время я использую django-rest-framework для API, через который я получаю свои данные. Интерфейс написан на React (без Redux на данный момент).

Поскольку мне нужно, чтобы большинство этих данных всегда были актуальными, при каждой загрузке я сохраняю их в localStorage, изатем возьмите оттуда. Это означает, что при загрузке страницы я загружаю все, что находится в localStorage, и, если необходимо (предопределенное время ожидания), я делаю запрос к серверу на свежие данные.

Проблема в том, что сСейчас я делаю это примерно для 10 конечных точек API, каждые 5 минут число запросов к серверу быстро растет, даже если данные не меняются. Кроме того, я также проверяю уведомления каждые 40 секунд, поэтому 99% моего журнала доступа - это просто "GET /api/notifications/ HTTP/1.1" 200 2.

Вопрос : как сделать это более эффективным длясервер?

Я все еще хочу иметь почти мгновенный доступ к данным, когда я загружаю страницу (поэтому сохраняйте localStorage и просто обновляйте ее по требованию), но я не хочу отправлять 2000 уведомлений на запросыдень, особенно если нет новых уведомлений.

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

Почему я не просто использую Django WebSockets/От себя? Это не многопользовательская игра или чат - здесь одновременно подключено не более 5 пользователей. Я чувствую, что должно быть более простое решение, даже если оно немного хакерское, но я могу ошибаться.

...