C# 如何在mvc中将用户详细信息缓存在分部文件中

C# 如何在mvc中将用户详细信息缓存在分部文件中,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,在每页的页眉中,我显示用户名和用户点。这是从一个分部(从数据库获取点)中拉入的 我如何缓存该部分,以便在每个页面上都不必检查数据库中的用户点,24小时后它可以再次查看(缓存过期)。另外,如果用户注销,其他人登录,则会显示新的用户名和点(而不是以前缓存的用户名和点)。您的意思是:“我不想在每个操作中编写相同的代码来加载我的用户数据并将其传递给视图,而视图将呈现部分视图” 如果是,则将您的RenderPartial更改为RenderAction,并将从数据库获取用户统计信息的逻辑放在那里 但每次用户

在每页的页眉中,我显示用户名和用户点。这是从一个分部(从数据库获取点)中拉入的


我如何缓存该部分,以便在每个页面上都不必检查数据库中的用户点,24小时后它可以再次查看(缓存过期)。另外,如果用户注销,其他人登录,则会显示新的用户名和点(而不是以前缓存的用户名和点)。

您的意思是:“我不想在每个操作中编写相同的代码来加载我的用户数据并将其传递给视图,而视图将呈现部分视图”

如果是,则将您的RenderPartial更改为RenderAction,并将从数据库获取用户统计信息的逻辑放在那里

但每次用户请求页面时,都会执行此代码


您可能想考虑将值放在HTTPCACH中(http://msdn.microsoft.com/en-us/library/aa478965.aspx)因此,您不必为每个请求都访问数据库。

这是特定于用户的,因此我会将其存储在持久性cookie中。因此,当用户进行身份验证时,您可以查询数据库以获取所需信息,并发出一个将在24小时内过期的持久cookie。然后在部分中,您将检查cookie是否存在,并从该cookie中获取必要的数据,如果cookie不存在,则查询数据库并重新提交cookie。当用户注销时,您可以删除cookie,尽管这并不是绝对必要的,因为当用户重新登录(使用相同或其他用户名)时,您将再次查询数据库并重新提交cookie


因为我们生活在2011年,HTML5取代了Cookie进入我们的生活,我可能会使用,如果浏览器不支持它,我会退回到Cookie。

正如Darin提到的,本地存储可能是一种选择,但是Cookie得到了更广泛的支持,而且回退机制肯定会起作用

但是,根据需要存储的内容,您可能不希望在cookie或任何类型的复杂数据中存储任何敏感信息,因此如果您开始添加需要跟踪的其他数据段,cookie中的数据将无法扩展。我通常只使用cookie从数据库或服务器端缓存中键入需要查询的内容

如果您使用ORM,例如NHibernate,那么应用程序中的显式缓存可能不是您需要非常关心的事情,因为数据将由ORM的缓存提供程序缓存(本地或分布式选项可用)


由于这是特定于用户的,所以另一个选项是在用户进行身份验证时将此信息存储在会话状态服务器端(可以选择使用cookie)。

这是一种方法。对于该操作,为其提供一个每隔24小时过期的
OutputCache
属性,您应该设置该属性。