2

与在 Net MVC 中一样,我想将响应缓存保存到服务器(称为 outputcache),但在 Net Core 或 Net 5 中没有这样的功能。我找不到替代方法。先感谢您。

4

1 回答 1

1

您可以使用WebEssentials.AspNetCore.OutputCaching nuget 来满足您的要求。

请按照以下步骤操作:

1.添加中间件:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }
    public void ConfigureServices(IServiceCollection services)
    {
         services.AddOutputCaching();
         //other middleware...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseOutputCaching();

        //other middleware...
    }
}

2.OutputCache为动作添加属性:

[OutputCache(Duration = 600)]
public IActionResult Index()
{ ... }

用于测试的示例代码:

控制器:

[OutputCache(Duration = 600)]
public IActionResult Index()
{        
    return View(DateTime.Now);
}

看法:

@model DateTime

Time of request: @Model.ToString()

尝试请求页面并注意日期和时间保持不变,即使在重新加载页面时也是如此,直到缓存过期。

OutputCache 不仅包含Duration选项,还包含其他选项,例如VaryByHeader,VaryByParam等等...

更多细节可以参考github repo for WebEssentials.AspNetCore.OutputCaching

于 2021-11-30T08:13:32.407 回答