ASP.NET MVC 3中是否可用甜甜圈缓存?

12

今天发布了ASP.NET MVC 3(最终版)。当此版本处于初期阶段时,我记得在CodePlex上阅读到有人考虑使用甜甜圈缓存技术。有人知道这是否纳入了V3吗?我找不到任何信息,所以只能(不幸地)假设它没有发生。


让我理解一下,自.NET 2以来就有甜甜圈缓存可用。MVC2支持它。MVC3取消了支持?!地球上为什么要这样做?除了自己编写所有内容之外,没有其他选择吗?呃,这肯定不对。 - batkuip
4个回答

15

是的,确实如此。Scott Gu 在他的博客上提到了:

除了支持完整页面输出缓存之外,ASP.NET MVC 3还支持部分页面缓存——这使您可以缓存一个输出区域并在多个请求或控制器之间重复使用它。RC2更新了部分页面缓存的[OutputCache]行为,以便子内容缓存条目基于输入参数变化,而不是顶级请求的URL结构——这使得缓存场景比先前的RC中的行为更加简单和强大。


更新:

ASP.NET MVC 3仅支持甜甜圈缓存。这允许您在子操作上使用[OutputCache]属性来缓存页面的一小部分。不支持甜甜圈缓存,它允许排除已缓存页面的某些部分。自ASP.NET MVC 2以来,Response.WriteSubstitution不起作用。这是一篇好的文章,解释了ASP.NET MVC 3中可用的不同缓存选项。


更新2:

这是一篇很棒的文章,阐述了如何在ASP.NET MVC 3中启用甜甜圈缓存。


2
这是甜甜圈空缺缓存,不是甜甜圈缓存。 MVC 3中不支持原装的甜甜圈缓存。 - Levi
@Darin,感谢更新。确实是一篇优秀的文章。我在某个地方读到过,目标是在MVC 4中包含甜甜圈缓存,不确定是等待还是使用这个NuGet包... - JP.

2

我发现了一个NuGet包MvcDonutCaching,在Denis Huvelle的文章中提到,它可以解决3和4的问题 - 但我还没有测试过。


2

以下是Scott使用Razor语法提供的稍微详细一些的示例


1
很好的链接,但不确定这是否是甜甜圈缓存,因为页面没有被缓存,但“甜甜圈”被缓存了。我不想缓存页面的某些部分,而是要缓存整个页面并保留某些动态部分。这是一个微妙的问题,但应该澄清。 - Khalid Abuhakmeh

2

甜甜圈缓存(是的,真的存在)可作为我的“速度库”之一在MVC中使用:Moth。适用于ASP.NET MVC 2和MVC 3。

文档在wiki中,示例在Mvc3.Demo文件夹中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接