【发布时间】:2012-09-05 21:30:27
【问题描述】:
我的网站右上角有一个小菜单,显示用户的名字和姓氏。我把这件作品放在局部视图中。由于这显示在每个页面上,我显然想缓存它,这样我就不必每次加载页面时都获取用户的信息。我应该将它存储在缓存或会话数据中,如果它在每个页面中,我应该在哪里创建我的代码来缓存这些数据?
【问题讨论】:
标签: c# asp.net asp.net-mvc-3 caching
我的网站右上角有一个小菜单,显示用户的名字和姓氏。我把这件作品放在局部视图中。由于这显示在每个页面上,我显然想缓存它,这样我就不必每次加载页面时都获取用户的信息。我应该将它存储在缓存或会话数据中,如果它在每个页面中,我应该在哪里创建我的代码来缓存这些数据?
【问题讨论】:
标签: c# asp.net asp.net-mvc-3 caching
根据场景,您绝对应该使用缓存。正如您所说,您已经将菜单作为部分视图
[OutputCache(Duration = 3600)]
public ActionResult mymenu()
{
return PartialView();
}
【讨论】:
最好将用户信息存储在 session 中,而不是缓存中。缓存主要是应用程序级别,会话是每个用户/会话。您可以在缓存中存储每个用户的信息,前提是您提供密钥(通过会话或 cookie)。
这篇文章可能有用:- cache-session-viewstate-c#
【讨论】:
如果您指的是 ASP.Net 缓存,则存储在其中的信息可用于机器上运行的任何 .Net 页面。我认为在你的情况下 Session 会更合适。
【讨论】:
我不确定您使用的是什么身份验证机制,但它可能已经存储在:
HttpContext.Current.User
或
System.Threading.Thread.CurrentPrincipal
【讨论】:
我更喜欢创建一个用户对象,我可以在我的网站上设置我需要的所有方便的参数。
此对象存储在会话或数据库中,具体取决于站点
【讨论】: