Jekins
@Jekins
Front-end developer

Как лучше хранить данные полученные по Ajax в Angular?

Доброго времени суток.
Разрабатываю веб приложение на Angular 4, после авторизации пользователь получает от API по Ajax массив данных, например список своих статей. На данный момент, при каждом роутинге отрабатывает сервис, который по апи заново запрашивает данные с этими же статьями и по-моему это как-то не правильно, так как шанс того, что они так быстро в базе уже поменялись - минимален.
Как лучше в таком случае организовать хранение данных и периодическую их синхронизацию с базой? Как вариант, рассматриваю LocalStorage, но хотелось бы точно узнать, как это делается правильно, а не основываться на догадках.

Спасибо.
  • Вопрос задан
  • 1403 просмотра
Пригласить эксперта
Ответы на вопрос 5
Hardwit
@Hardwit
Front-end Developer
Используй свой сервис для хранения данных, не запрашивай заново.
Ответ написан
xolvo
@xolvo
Вообще такие проблемы решает кеширование. Но как известно в программировании есть две проблемы - инвалидация кеша и именование переменных. Чтобы правильно работать с кешем с фронтенда, бекенд должен поддерживать такие вещи как HTTP Cache (см. https://developer.mozilla.org/en-US/docs/Web/HTTP/... там есть перевод на русский, например). Уверен, что для Angular 4 есть встроенная поддержка (см. https://angular.io/guide/http#caching ) или с помощью сторонних библиотек.
Ответ написан
Комментировать
Добавлю к Иван Минаков
Сервис - синглтон, может хранить но протяжении всей сессии. Локал сторедж или кеш нужны для хранения между сессиями.
Ответ написан
Комментировать
У меня в приложении решено так - если данные есть в CouchDb, выдаем их, если нет - приложение лезет на сервер. это решение актуально для относительно большого объема данных, кроме того можно использовать localStorage, sessionStorage. Как уже было сказано выше, можно конечно хранить данные в сервисе, но хранение данных в памяти приложения - плохая идея.
Ответ написан
Комментировать
uaKorona
@uaKorona
Front-End разработчик
Если у вас есть корневой роут - можно на его уровне зарезолвить данные (список статей) - и они будут доступны на всех вложенных роутах
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы