Asp.net MVC 2缓存

我目前正在使用c#中的asp.net mvc 2开发一个网站。 我从未在MVC中使用过缓存function,并希望将其应用于用户配置文件页面。 此页面上的内容很少发生变化,唯一需要实时的部分是用户最近发布的post列表。 (我使用linq-to-sql从数据库加载数据)

我需要一些关于我应该使用哪种缓存技术以及如何实现它的建议?

更新:下面的Xandy解决方案几乎可以工作,除了我无法传递数据。 我怎么用这个重写呢? Html.RenderPartial(“UserPosts”,ViewData [“UserPosts”])

Phil Hack的片段缓存技巧不再适用于MVC2。

在StackOverflow,我们将html片段构建为文本,并使用HttpRuntime.Cache等来缓存它们。

正如其他答案所述,甜甜圈缓存“有点”在MVC中起作用。

我不推荐它 – 而是我会提供一个替代品:

您有一个用户配置文件的视图,我们称之为“ UserProfile.aspx ”。

现在在这个视图中,你有一堆HTML,包括“最近的post”部分。

现在,我假设这类似于用户的最后10篇post

我要做的是将这个HTML /部分放入一个部分视图,并通过一个单独的动作方法,也就是PartialViewResult来提供它

 public class UserProfileController { [HttpGet] [OutputCache (Duration=60)] public ActionResult Index() // core user details { var userProfileModel = somewhere.GetSomething(); return View(userProfileModel); } [HttpGet] public PartialViewResult DisplayRecentPosts(User user) { var recentPosts = somewhere.GetRecentPosts(user); return PartialViewResult(recentPosts); } } 

使用jQuery渲染部分视图:

  

这样,您可以最大化OutputCache以获取核心详细信息(Index()),但不会缓存最近的post。 (或者你可以有一个非常小的缓存期)。

渲染部分的jQuery方法与RenderPartial不同,因为这样您可以直接从控制器提供HTML,因此您可以相应地控制输出缓存。

最终结果非常类似于圆环缓存(缓存页面的一部分,其他不是)。

ASP.Net有一个关于MVC输出缓存的教程 。

部分(又名Donut)缓存适用于MVC2。