Razor视图引擎.cshtml页面中的OutputCache

时间:2010-12-11 06:34:10

标签: asp.net-mvc asp.net-mvc-3 outputcache razor

使用ASP.NET MVC Web表单,我们可以将输出缓存放在控制器级别或视图级别。我们怎么能在.cshtml页面中提到“outputcache”?

我在任何地方都找不到它。我在哪里可以获得语法?

4 个答案:

答案 0 :(得分:7)

你是什么意思“ASP.NET MVC Web Forms”?如果您在Page指令中引用OutputCache属性,那就是ASP.NET Web Forms。

ASP.NET MVC在控制器操作级别上具有输出缓存:

    [OutputCache(Duration=10, VaryByParam="none")]
    public ActionResult Index()
    {
        return View();
    }

这与视图引擎(ASPX / Razor)无关。

答案 1 :(得分:2)

使用ASP.NET MVC Web表单,您可以将输出缓存放在视图级别,但这不会起作用。它就在那里,因为它是传统ASP.NET的遗产。在ASP.NET MVC中,输出缓存应始终放在控制器操作上。

因为在新引入的Razor视图引擎中将高速缓存值放在视图中是没有意义的,所以不存在这种可能性。您应该始终将此属性放在控制器操作上。

答案 2 :(得分:2)

请参阅古师傅关于此主题的最新文章:MVC2 Announcement

特别是这一部分:

  

输出缓存改进

     

ASP.NET MVC 3的输出缓存系统   不再要求您指定   声明时的VaryByParam属性   [OutputCache]属性   控制器动作方法。 MVC3现在   自动改变缓存的输出   你有明确的条目   你的行动方法的参数 -   允许您干净地启用输出   使用类似代码缓存操作   下面:

     

alt text

     

除了支持整页   输出缓存,ASP.NET MVC 3也   支持部分页面缓存 - 哪个   允许您缓存输出区域   并在多个请求中重复使用它   或控制器。 [OutputCache]   部分页面缓存的行为是   用RC2更新了子内容   缓存的条目基于不同   输入参数而不是URL   顶级请求的结构 -   这使得两者都有缓存方案   比起来更容易,更强大   在以前的RC中的行为。

所以这对我们来说改善了很多。

  1. 在控制器操作上简单地提及OutputCache将负责在定义的持续时间内从特定操作中兑现结果。缓存将根据定义的操作参数(通常是所需的行为)自动更改。
  2. 它也将在Child Actions(通过Html.Action(...)调用的那些)上透明地工作。

答案 3 :(得分:1)

听起来好像其他人回答了主要问题 - 在MVC3 +中的页面/ cshtml文件上配置页面缓存,请使用控制器中的Action方法。

但是,对于更复杂的方案,您可以通过Razor语法访问WebCache对象。

其中一些场景是旧的甜甜圈/甜甜圈(或Donut / Dounut)缓存。这是一个MVC3聚焦线程Stack Overflow

还找到了Denis Huvelle提到的NuGet包MvcDonutCaching,它解决了3& 3的问题。 4 - 但我还没有测试过。