我们做了很多REST调用,并且希望缓存这些调用中的大部分。我们目前的选择是什么?Core目前不支持输出缓存,所以我们可以使用响应缓存或分布式缓存吗?如果是响应缓存,是否可以使用Kestrel前面的IIS反向代理进行响应缓存?谢谢!
. NET Core支持响应缓存。
输出缓存被缓存助手标签支持用于Razor视图,但这对REST调用没有帮助。
分布式缓存或InMemory缓存是一种很好的方式来存储从持久化级别检索成本很高的信息。这将在服务级别上对您有所帮助,但对输出缓存没有帮助(当然,如果您愿意,您可以做一些自己的中间件)。缓存助手标签也依赖于这些技术。
因此REST调用的缓存输出归结为响应缓存。简而言之,这是关于如何在响应中设置Cache-Control
标头。如果您在控制器的ResponseCache
注释中选择ResponseCacheLocation.Any
作为Location
(或CacheProfile
),则使用public作为cache - control,并允许反向代理缓存响应。但我没有尝试过,如果这是IIS和Kestrel组合的情况。
这篇博文也是关于这个话题的一篇有趣的文章。