使用ASP.NET MVC Web表单,我们可以将输出缓存放在控制器级别或视图级别。我们怎么能在.cshtml页面中提到“outputcache”?
我在任何地方都找不到它。我在哪里可以获得语法?
答案 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现在 自动改变缓存的输出 你有明确的条目 你的行动方法的参数 - 允许您干净地启用输出 使用类似代码缓存操作 下面:
除了支持整页 输出缓存,ASP.NET MVC 3也 支持部分页面缓存 - 哪个 允许您缓存输出区域 并在多个请求中重复使用它 或控制器。 [OutputCache] 部分页面缓存的行为是 用RC2更新了子内容 缓存的条目基于不同 输入参数而不是URL 顶级请求的结构 - 这使得两者都有缓存方案 比起来更容易,更强大 在以前的RC中的行为。
所以这对我们来说改善了很多。
答案 3 :(得分:1)
听起来好像其他人回答了主要问题 - 不在MVC3 +中的页面/ cshtml文件上配置页面缓存,请使用控制器中的Action方法。
但是,对于更复杂的方案,您可以通过Razor语法访问WebCache对象。
其中一些场景是旧的甜甜圈/甜甜圈(或Donut / Dounut)缓存。这是一个MVC3聚焦线程Stack Overflow。
还找到了Denis Huvelle提到的NuGet包MvcDonutCaching,它解决了3& 3的问题。 4 - 但我还没有测试过。