我想知道是否有一个最佳实践来实现类似于输出缓存的东西,尽管其余部分被输出缓存,但仍然允许我们生成响应服务器端的一小部分?我们使用 ASP.NET Core MVC Razor 页面在服务器端渲染响应。
曾经有一个名为
MvcDonutCaching
的 nuget 允许我们在 .NET 4.8 时代做到这一点,但它已被弃用。
具体来说,我们需要将广告平台集成到我们的解决方案中,但该广告平台是服务器到服务器的,因此不能单独嵌入在客户端。我们显然不想放弃我们今天大量使用并依赖于在高峰时卸载后端处理的输出缓存。
您可以尝试以下示例在asp.net core中进行部分缓存
builder.Services.AddResponseCaching();
...
app.UseResponseCaching();
索引.cshtml
@using Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!-- Cached Section -->
<cache vary-by-route="true" expires-after="TimeSpan.FromMinutes(1)">
<p>Cached Time: @DateTime.Now.ToString("HH:mm:ss")</p>
</cache>
<!-- Dynamic Section -->
<p>Non-Cached Time: @DateTime.Now.ToString("HH:mm:ss")</p>
注意:当你刷新页面时,你会发现缓存的部分时间没有改变,因为它们来自缓存的资源。