You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 4.5 OutputCache迁移至.NET 8.0 实现服务端缓存配置

.NET 8 等效替换 .NET 4.5 OutputCache 服务端缓存配置

要在.NET 8中实现和旧版.NET 4.5完全等效的服务端缓存,需要分两步配置:先注册自定义缓存策略,再在控制器方法上引用该策略。

1. 在Program.cs中配置OutputCache服务与策略

首先添加OutputCache服务,并定义一个仅在服务端生效的缓存策略,对应你需要的所有参数:

builder.Services.AddOutputCache(options =>
{
    options.AddPolicy("ServerSideCache", policy =>
    {
        // 缓存有效期1分钟,对应旧版Duration=60
        policy.Expire(TimeSpan.FromMinutes(1));
        // 按所有查询参数区分缓存,对应旧版VaryByParam="*"
        policy.SetVaryByQueryKeys("*");
        // 不允许缓存存储到客户端,对应旧版NoStore=true
        policy.NoStore();
        // 明确指定缓存仅存储在服务端,对应旧版Location=Server
        policy.CacheLocation(OutputCacheLocation.Server);
    });
});

// 启用OutputCache中间件(需放在路由配置之前)
app.UseOutputCache();

2. 在控制器方法上应用策略

直接在目标Action上使用[OutputCache]属性,指定我们定义的策略名即可:

[OutputCache(PolicyName = "ServerSideCache")]
public IActionResult MyController(...)
{
    // 你的业务逻辑代码
}

为什么你之前的尝试无效?

你直接使用[OutputCache(Duration = 60, NoStore = true, VaryByQueryKeys = ["*"])]时,实际上是在使用.NET 8的默认缓存策略,而默认策略并不强制限定缓存位置为服务端,可能导致缓存逻辑不符合预期。必须通过自定义策略明确指定CacheLocation(OutputCacheLocation.Server),才能确保缓存仅存储在服务端,实现你需要的“用已有缓存响应多设备请求、避免下游重复调用”的需求。

内容的提问来源于stack exchange,提问作者Espen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:25:01