2015-10-20 2 views
0

Я работаю над Angular SPA, и теперь я пытаюсь реализовать некоторый уровень кэширования на стороне клиента для данных сеанса. Это данные, которые используются в маршрутах/контроллерах, поэтому я не хочу повторно удалять сервер/базу данных повторно, чтобы извлечь ее.Данные кэширования сеанса только между загрузками страниц в Angular SPA

Первоначально я реализовал кеширование с использованием sessionStorage, но заметил, что когда я выхожу из системы, а затем возвращаюсь обратно, предыдущие данные сеанса все еще существуют. Когда вы думаете о том, как я правильно очистил данные кэшированного сеанса, кажется, что самый безопасный способ справиться с этим - сохранить данные сеанса в моем SPA между страницами загрузки/обновления. Даже если я должен очистить кеш при выходе из системы, пользователь может потенциально перейти непосредственно на страницу входа в систему и войти в систему, подорвав процесс выхода из системы, в результате чего будут существовать разные данные сеанса.

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

Заранее спасибо.

ответ

1

Простым способом является использование $ rootScope, но всегда будет сброшен, когда страница обновится, поскольку это одностраничное приложение.

Вам необходимо использовать что-то, что сохраняется на стороне клиента, например, cookie или sessionStorage (так как оба они имеют время истечения срока действия). Для печеньков см. $ CookieУдаление: https://docs.angularjs.org/api/ngCookies/service/ $ cookieУправление