缓存响应消息

Caching of response messages

我们进行了很多 REST 调用,并希望缓存其中的大部分调用。我们目前的选择是什么? Core 目前不支持输出缓存,那么我们可以为此使用响应缓存或分布式缓存吗?如果是Response Caching,Kestrel前面的IIS反向代理是否可以用于Response Caching场景?谢谢!

ASP.NET 核心支持 Response Caching

Cache Helper Tag 支持 Razor 视图的输出缓存 - 但这对 REST 调用没有帮助。

分布式缓存InMemory缓存是一种很好的存储信息的方法,这些信息从持久性级别检索时成本很高。这将在 服务级别 上帮助您,但对输出缓存没有帮助(当然,如果您愿意,您可以做一些自己的中间件)。 Cache Helper Tag 也依赖于这些技术。

因此 REST 调用的缓存输出归结为 响应缓存。简而言之,这是关于如何在响应中设置 Cache-Control header 的。如果您在控制器(或 CacheProfile)的 ResponseCache 注释中选择 ResponseCacheLocation.Any 作为 Location,则 public 用作 Cache-Control和反向代理也可以缓存响应。不过我没试过,如果IIS和Kestrel的结合是这样的话。

这篇 Blog Post 也是关于这个主题的有趣读物。