繁体   English   中英

ASP.NET核心——Output缓存和响应缓存的区别

[英]ASP.NET Core - difference between Output caching and Response caching

ASP.NET Core 7 预览版 6 刚刚引入了Output 缓存,它缓存了端点 output。但是 ASP.NET 已经有了Response 缓存,它似乎已经提供了相同的功能。
两者有什么区别,什么时候应该使用一个,什么时候应该使用另一个?

我一直在寻找答案并试图理解两者之间的区别,并且确实花了很多时间来理解两者之间的区别,以及何时(或不)相互使用。

截至2022年11月.Net 7已经发布,但文档对它们之间的区别不是很清楚。 文档和所有视频仅讨论将OutputCache作为ResponseCache的替代品。 还搜索OutputCache ,它从旧的 AspNet(完整框架)MVC 5 中得到了很多结果。

因此,让我们澄清一下差异以及我们如何相互利用。

响应缓存

首先,ResponseCache 可以分为两部分,它们独立工作,并且是关于如何以及在何处缓存信息的不同概念。 让我们赶上他们:

  1. ResponseCacheAttribute :基本上它操作缓存 header,如VaryCache-Control和其他。 它告诉浏览器或代理存储(或不存储)响应内容。 如果使用得当,这种技术可以减少对服务器的请求数量。

ResponseCache 属性设置响应缓存标头。 客户端和中间代理应遵守 HTTP 1.1 缓存规范下的缓存响应标头

  1. 响应缓存中间件:基本上它用于根据ResponseCacheAttribute定义的标头进行服务器端缓存。 根据发送到服务器的请求标头,响应永远不会缓存在服务器端。

启用基于 HTTP 缓存标头的缓存服务器响应。 实现标准 HTTP 缓存语义。 像代理一样基于 HTTP 缓存标头的缓存。

对于 Razor 页面等 UI 应用程序通常没有好处,因为浏览器通常会设置阻止缓存的请求标头。 Output 缓存在 ASP.NET Core 7.0 及更高版本中可用,有利于 UI 应用程序。 使用 output 缓存,配置决定应该独立于 HTTP 标头缓存什么。

在这一点上, OutputCache取代了Response Caching Middleware

OutputCache (在 ASP.NET Core 7.0 及更高版本中可用)

OutputCache配置决定了应该缓存什么(服务器端),独立于 HTTP 标头。 它还具有许多新功能,如缓存条目失效、存储介质可扩展性

结论

要从两个世界中获益,您可以使用:

  • ResponseCacheAttribute :操作响应标头并使客户端/代理能够在client side存储内容;
  • OutputCache :在server side存储响应并在缓存响应时增加吞吐量。

两者都独立工作。 您可以选择最适合您的应用程序。

我还没有观看 CodingMytra 提供的视频。 但我认为Output cachingResponse caching有一些增强。 例如,您可以指定几秒钟的缓存。

我找到了一个有用的视频,它有一些演示,您可以了解更多关于 .Net7 中的Output caching的信息。 我想你可以在这个视频中找到不同之处。

我们可以在这个 github issue 中找出为什么需要输出缓存。

链接:添加对输出缓存 #27387 的支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM