首页 新闻 会员 周边

ASP.NET Core Minimal APIs 的 Output Cache 不起作用

0
悬赏园豆:30 [已解决问题] 解决于 2026-03-16 12:44

注册了 output cache 服务

services.AddOutputCache();

添加了 output cache middleware

app.UseOutputCache();

在下面的 Minimal API 通过 CacheOutput 配置了 output cache

app.MapGet("/sitemap.xml", ProduceRootSitemapAsync)
    .CacheOutput(builder => builder.Expire(TimeSpan.FromMinutes(10)));

但运行时 output cache 没有生效,请问如何解决这个问题?

dudu的主页 dudu | 高人七级 | 园豆:23243
提问于:2026-03-16 09:05
< >
分享
最佳答案
0

请求头里面不能包含no-cache, no-store,然后 UseOutputCache放在UseRouting 之后,或者针对xml指定特别的策略:builder.Services.AddOutputCache(options =>
{
options.AddPolicy("SitemapPolicy", policy =>
{
policy.Expire(TimeSpan.FromMinutes(10))
.SetVaryByAccept() // 重要:区分 XML 和 HTML
.SetVaryByHeader("Accept-Encoding");
});
});
app.MapGet("/sitemap.xml", ProduceRootSitemapAsync)
.CacheOutput("SitemapPolicy");

收获园豆:30
Tlink | 初学一级 |园豆:148 | 2026-03-16 11:01

就是 UseOutputCache 放在 UseRouting 之前引起的,放到之后就可以了

app.UseRouting();
app.UseCors();
app.UseResponseCaching();
app.UseOutputCache();
app.UseAuthentication();
app.UseAuthorization();
dudu | 园豆:23243 (高人七级) | 2026-03-16 12:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册