仅在 Angular SPA 中的页面加载之间缓存会话数据
Caching session data only between page loads in Angular SPA
我正在开发 Angular SPA,我现在正在尝试为会话数据实施某种级别的客户端缓存。这是在 routes/controllers 中使用的数据,所以我不想不必要地重复点击 server/database 来检索它。
我最初使用 sessionStorage 实现了缓存,但我注意到当我注销然后重新登录时,之前的会话数据仍然存在。在考虑如何适当地清除缓存的会话数据时,最安全的处理方法似乎是仅将会话数据保留在我的 SPA between 页面 loads/refreshes 中.即使我在注销时清除缓存,用户也可能直接导航到登录页面并登录,从而破坏注销过程,导致存在不同的会话数据。
假设这是一种合理的方法,是否有办法配置 sessionStorage 或其他缓存机制以仅保留页面 loads/refreshes 之间的缓存?如果没有内置配置,我可以将唯一标识符 (guid) 存储为隐藏字段并在我的 sessionStorage 键中使用它。
提前致谢。
简单的方法是使用 $rootScope,但在页面刷新时总是会重置,因为它是一个单页应用程序。
您需要使用在客户端持久化的东西,例如 cookie 或 sessionStorage(因为它们都有过期时间)。对于 cookie,请参见 $cookieStore:
https://docs.angularjs.org/api/ngCookies/service/$cookieStore
我正在开发 Angular SPA,我现在正在尝试为会话数据实施某种级别的客户端缓存。这是在 routes/controllers 中使用的数据,所以我不想不必要地重复点击 server/database 来检索它。
我最初使用 sessionStorage 实现了缓存,但我注意到当我注销然后重新登录时,之前的会话数据仍然存在。在考虑如何适当地清除缓存的会话数据时,最安全的处理方法似乎是仅将会话数据保留在我的 SPA between 页面 loads/refreshes 中.即使我在注销时清除缓存,用户也可能直接导航到登录页面并登录,从而破坏注销过程,导致存在不同的会话数据。
假设这是一种合理的方法,是否有办法配置 sessionStorage 或其他缓存机制以仅保留页面 loads/refreshes 之间的缓存?如果没有内置配置,我可以将唯一标识符 (guid) 存储为隐藏字段并在我的 sessionStorage 键中使用它。
提前致谢。
简单的方法是使用 $rootScope,但在页面刷新时总是会重置,因为它是一个单页应用程序。
您需要使用在客户端持久化的东西,例如 cookie 或 sessionStorage(因为它们都有过期时间)。对于 cookie,请参见 $cookieStore: https://docs.angularjs.org/api/ngCookies/service/$cookieStore