【问题标题】:Caching Views in Memory在内存中缓存视图
【发布时间】:2017-07-19 17:38:35
【问题描述】:

是否可以在 ASP.NET Core 中缓存整个视图?

可以使用IMemoryCache 在 ASP.NET Core 中缓存数据,但是我看不到任何缓存已编译视图的方法,因此每次请求时都不会重新编译它们。

我最初尝试在Controller中缓存View()方法返回的ViewResult对象,但后来我发现这些对象并不是真正的视图。

澄清一下,我希望能够缓存动态视图,这样它们的代码就不会在每次被请求时都被编译,只有在超过指定的超时时间时才被编译。

【问题讨论】:

  • 你听说过[OutputCacheAttribut](msdn.microsoft.com/en-us/library/…)
  • 请注意,该框架被称为 ASP.NET Core 1.x 而不是 ASP.NET 5。它已在 18 个月前重命名为避免混淆跨度>

标签: caching asp.net-core asp.net-core-mvc


【解决方案1】:

您可以通过为 Action/Controller 指定 OutputCache 属性来做到这一点。

正如MSDN 所说:

OutputCacheAttribute

  • 输出缓存允许您将操作方法​​的输出存储在 Web 服务器上的内存。例如,如果操作方法呈现一个 视图,视图页面将被缓存。然后,此缓存页面可供应用程序用于后续请求。输出缓存为您的应用程序节省了重新创建操作方法结果所需的时间和资源。

  • 在 ASP.NET MVC 中,您可以使用 OutputCacheAttribute 属性来标记要缓存其输出的操作方法。如果你标记 具有 OutputCacheAttribute 属性的控制器,输出 控制器中的所有动作方法都将被缓存。

属性:

NoStore:获取或设置一个值,表示是否存储缓存。

Duration :获取或设置缓存时长,以秒为单位。

更多属性请参考OutputCacheAttribute Properties

也请看看这个Improving Performance with Output Caching


更新

对于 ASP.NET Core,还有一个名为 Response Caching 的属性。

根据Microsoft Docs

响应缓存

  • 响应缓存将与缓存相关的标头添加到响应中。这些标头指定您希望客户端、代理和中间件如何缓存响应。响应缓存可以减少客户端或代理向 Web 服务器发出的请求数量。响应缓存还可以减少 Web 服务器为生成响应而执行的工作量。

与输出缓存不同,它不会在服务器上存储 HTTP 响应,它只是在响应 (Source) 中添加“Cache-Control”标头。

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2013-06-03
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多