问题描述
我正在将旧的 ASP.NET Web 窗体项目迁移到 ASP.NET Core Web API 和前端 Angular。在我的旧应用程序中存储用户信息实例及其值(如分配的组、权限和其他用户信息)。我将使用 JWT 我无法在 JWT 中存储所有信息,所以我应该在我的 asp.net 中继续会话核心应用程序或在每个请求中从数据库中检索此信息?
在现代应用程序开发中还有其他可用的最佳实践吗?
解决方法
这有多种选择,取决于您的需要:
- 角度缓存。如果数据不敏感,可以使用rxjs observables在应用端缓存一些数据。浏览器上存储的某些数据没有问题。由于您来自完整的回发应用程序,因此 SPA 缓存在大多数情况下相当于旧的
Session
对象。 - 根据实现,您可能还需要在服务器端进行一些缓存。由于如前所述,您将拥有多个服务器,因此我建议仅缓存查找等,而不是用户相关数据。如果您对服务器和会话实施粘性(不推荐),这仍然是一个选项。
- 分布式缓存。您可能听说过 Redis 之类的东西?这也是将缓存数据存储到所有服务器实例均可访问的第三个服务的选项。
这一切都归结为复杂性与速度。如果查询足够简单且快速,那么无论如何将它们存储在任何缓存中都可能没用。