Caching Views in Memory

时间:2017-04-10 02:52:11

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

Is it possible to cache entire Views in ASP.NET Core?

One can use IMemoryCache to cache data in ASP.NET Core, however I can't see any way of caching the compiled Views so that they are not recompiled every time they are requested.

I initially tried to cache the ViewResult Objects returned by the View() method in the Controller, however I later found that these objects are not the actual Views.

To clarify, I would like to be able to cache dynamic Views so that their code is not compiled every time they are requested, only once a specified timeout has been exceeded.

1 个答案:

答案 0 :(得分:1)

您可以通过为操作/控制器指定OutputCache属性来执行此操作。

正如MSDN所述:

  

<强> OutputCacheAttribute

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

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

  •   
     

<强>属性:

     

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

     

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

有关更多属性,请参阅OutputCacheAttribute Properties

请同时查看此Improving Performance with Output Caching

更新

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

根据Microsoft Docs

  

响应缓存

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

与输出缓存不同,它不会在服务器上存储HTTP响应,而只是添加&#34; Cache-Control&#34;回复(Source)中的标题。