Asp.net mvc 在asp.net mvc中,在my basecontroller中缓存用户信息的最佳方式是什么

Asp.net mvc 在asp.net mvc中,在my basecontroller中缓存用户信息的最佳方式是什么,asp.net-mvc,caching,Asp.net Mvc,Caching,在每次控制器调用中,我都有一段代码,可以从Web服务获取一些用户属性。我想为每个用户缓存这些,所以我只访问一次Web服务 在控制器方法中缓存代码的最佳方法是什么,这样可以避免在每次URL请求时命中数据库,但也不会在另一个用户登录时缓存一个用户的信息?查看该方法的缓存部分。我们在工作中使用它来缓存查找,因此您只需点击我们的WCF服务一次,而不是对完全相同的数据点击数千次 您还可以使用Session,我强烈建议您不要使用Session,除非您的用户非常小 if (Session("user") ==

在每次控制器调用中,我都有一段代码,可以从Web服务获取一些用户属性。我想为每个用户缓存这些,所以我只访问一次Web服务


在控制器方法中缓存代码的最佳方法是什么,这样可以避免在每次URL请求时命中数据库,但也不会在另一个用户登录时缓存一个用户的信息?

查看该方法的缓存部分。我们在工作中使用它来缓存查找,因此您只需点击我们的WCF服务一次,而不是对完全相同的数据点击数千次

您还可以使用Session,我强烈建议您不要使用Session,除非您的用户非常小

if (Session("user") == null)
{
    Session("user") = CallWebService.GetUser(userId);
}
为什么您应该保持小会话,例如:

避免在会话变量中存储太多数据,并确保会话超时是合理的。这可能会占用大量服务器内存。请记住,存储在会话变量中的数据可能会在用户关闭浏览器后很长时间挂起。太多的会话变量会使服务器崩溃


请查看的缓存部分。我们在工作中使用它来缓存查找,因此您只需点击我们的WCF服务一次,而不是对完全相同的数据点击数千次

您还可以使用Session,我强烈建议您不要使用Session,除非您的用户非常小

if (Session("user") == null)
{
    Session("user") = CallWebService.GetUser(userId);
}
为什么您应该保持小会话,例如:

避免在会话变量中存储太多数据,并确保会话超时是合理的。这可能会占用大量服务器内存。请记住,存储在会话变量中的数据可能会在用户关闭浏览器后很长时间挂起。太多的会话变量会使服务器崩溃


您可以使用ASP.NET会话存储每个用户的值。

您可以使用ASP.NET会话存储每个用户的值。

这似乎有点过分了。有没有一个更简单的解决方案(一个属性或其他东西)来表示每个用户的缓存???)您建议不使用会话的原因是什么??除非你的“用户”很小,否则你是什么意思?这似乎有点过分了。有没有一个更简单的解决方案(一个属性或其他东西)来表示每个用户的缓存???)您建议不使用会话的原因是什么??除非你的“用户”很小,否则你是什么意思??