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