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。
- Html.RenderPartial上的MVC System.Web.HttpCompileException
- 如何在viewmodel中创建可选的是/否单选按钮
- 使用LINQ2SQL在ASP.NET MVC中跨各种模型存储库共享数据上下文
- 使用Shibboleth进行asp.net MVC身份validation
- Button Group of Radio Buttons没有设置任何带Bootstrap 3的活动按钮
- TimeSpan上的Range和DisplayFormat属性
- C#mvc图像上传resize服务器端
- 我应该永远不会调用HostingEnvironment.UnregisterObject吗?
- 构建语言切换器 – 仅限2种语言 – ASP.NET MVC