gpt4 book ai didi

asp.net - 如何在 vNext 项目中的方法上应用 OutputCache 属性?

转载 作者:行者123 更新时间:2023-12-02 08:30:28 26 4
gpt4 key购买 nike

在异步方法的 vNext 应用程序中使用以下内容的正确方法是什么:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

我看到它是 System.Web.Caching 的一部分,但我唯一可以添加的地方是我的 project.json 文件的 aspnet50 -> FrameworkAssemblies 部分,这是不正确的。

最佳答案

ASP.NET Core 1.1/2.0 答案

添加响应缓存中间件,如下所示:

public void Configure(IApplicationBuilder application)
{
application
.UseResponseCaching()
.UseMvc();
}

此中间件根据您在响应中设置的缓存 HTTP header 来缓存内容。您可以查看答案的其余部分,了解如何使用 ResponseCache

ASP.NET Core 1.0 答案

请改用新的 ResponseCache 属性。 ResponseCache 不是 OutputCache 的直接替代品,因为它仅使用 Cache-Control HTTP header 控制客户端和代理缓存。

如果您想使用服务器端缓存,请参阅this StackOverflow 问题讨论如何使用 IMemoryCacheIDistributedCache

// Add this to your controller action.
[ResponseCache(Duration = 3600)]

以下是使用新缓存配置文件的示例:

// Add this to your controller action.
[ResponseCache(CacheProfile="Cache1Hour")]

// Add this in Startup.cs
services.AddMvc(options =>
{
options.CacheProfiles.Add(
new CacheProfile()
{
Name = "Cache1Hour",
Duration = 3600,
VaryByHeader = "Accept"
});
});

陷阱

响应缓存中间件会在各种情况下停止工作,您可以在docs中了解更多信息。 。您可能会遇到的两个常见问题是,如果它看到 AuthorizationSet-Cookie HTTP header ,它就会停止工作。

奖励评论

在 ASP.NET 4.6 中,我们可以在 web.config 中表示缓存配置文件并更改设置,而无需重新编译代码。有关如何将缓存配置文件移至新的 appsettings.json(而不是在 Startup.cs 中对其进行硬编码)的更多信息,请参阅 this问题。

关于asp.net - 如何在 vNext 项目中的方法上应用 OutputCache 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com