是否可以在 ASP.NET 核心中缓存整个视图?
可以使用IMemoryCache
在 Core 中缓存数据 ASP.NET 但是我看不到任何缓存已编译视图的方法,以便每次请求它们时都不会重新编译它们。
我最初尝试在控制器中缓存View()
方法返回的ViewResult
对象,但后来我发现这些对象不是实际的视图。
澄清一下,我希望能够缓存动态视图,以便每次请求时都不会编译它们的代码,只有在超过指定的超时时才会编译。
您可以通过为操作/控制器指定OutputCache
属性来执行此操作。
正如MSDN所说:
输出缓存属性
输出
缓存允许您将操作方法的输出存储在 Web 服务器上的内存。例如,如果操作方法呈现 视图,将缓存视图页面。然后,此缓存页可供应用程序用于后续请求。输出缓存可节省应用程序重新创建操作方法的结果所需的时间和资源。
在 MVC ASP.NET 中,可以使用 OutputCacheAttribute 属性来标记要缓存其输出的操作方法。如果您标记 具有 OutputCacheAttribute 属性的控制器,输出 将缓存控制器中的所有操作方法。
性能:
NoStore:获取或设置一个值,该值指示是否存储缓存。
持续时间:获取或设置缓存持续时间(以秒为单位)。
有关更多属性,请参阅 输出缓存属性
另请查看此 使用输出缓存提高性能.
更新
对于ASP.NET 核心,还有一个名为Response Caching
的属性
。根据Microsoft文档
响应缓存:
响应
- 缓存将与缓存相关的标头添加到响应中。这些标头指定您希望客户端、代理和中间件如何缓存响应。响应缓存可以减少客户端或代理向 Web 服务器发出的请求数。响应缓存还可以减少 Web 服务器为生成响应而执行的工作量。
与输出缓存不同,它不会在服务器上存储HTTP响应,它只是在响应中添加"Cache-Control"标头(源)。