缓存用户数据以避免多余的数据库跳闸

Din*_*nah 7 database asp.net-mvc caching

在为ASP.NET MVC站点创建概念证明并确保适当分离关注点后,我注意到我正在进行大量昂贵的冗余数据库调用以获取有关当前用户的信息.

作为历史上的桌面和服务人员,我的第一个想法是将db结果缓存到某些statics中.它没有花太多时间进行搜索,看到这样做会使当前用户的数据在所有用户的整个AppDomain中持续存在.

接下来我想到了使用HttpContext.Current.但是,如果您在用户注销时将内容放在此处,那么当他们登录时,您的缓存数据将会过时.我每次登录/退出时都可以更新这个,但我不知道这是否正确.在没有其他想法的情况下,这就是我倾向于的地方.

什么是准确缓存用户详细信息并避免必须进行大量数据库调用的轻量级方法?

AUS*_*eve 5

如果要缓存的信息是按用户进行的,并且只有在它们处于活动状态时,则Session才是正确的位置.
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.aspx