如何使用ASP.NET Core 中的响应缓存中间件
提问
ASP.NET Core 中的响应缓存中间件
回答
-
缓存条件
请求必须生成带有 200 (OK) 状态代码的服务器响应。
请求方法必须是 GET 或 HEAD。
响应缓存中间件必须放置在需要缓存的中间件之前。 有关详细信息,请参阅 ASP.NET Core 中间件。
不能出现 Authorization 标头。
Cache-Control 标头参数必须是有效的,并且必须将响应标记为 public 而不是 private。
如果 Cache-Control 不存在,则不能出现 Pragma: no-cache 标头,因为 Cache-Control 标头在存在时会覆盖 Pragma 标头。
不能出现 Set-Cookie 标头。
Vary 标头参数必须有效且不等于 *。
Content-Length 标头值(若已设置)必须与响应正文的大小匹配。
不使用 IHttpSendFileFeature。
根据 Expires 标头与 max-age 和 s-maxage 缓存指令所指定,响应不能过时。
响应缓冲必须成功。 响应的大小必须小于配置的或默认的 SizeLimit。 响应的正文大小必须小于配置的或默认的 MaximumBodySize。
响应必须可根据 RFC 9111:HTTP 缓存进行缓存。 例如,no-store 指令不能出现在请求头或响应头字段中。 有关详细信息,请参阅 RFC 9111:HTTP 缓存(第 3 节“在缓存中存储响应”)。 -
配置
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddResponseCaching();
var app = builder.Build();
app.UseHttpsRedirection();
// UseCors must be called before UseResponseCaching
//app.UseCors();
app.UseResponseCaching();
3.特性
[HttpGet("info", Name = nameof(Info))]
[ResponseCache(Duration = 10, Location = ResponseCacheLocation.Any, NoStore = false)]
public ActionResult Info([FromHeader(Name = "access_token")] string token){
//TODO : SOMETHING
}
参考
https://learn.microsoft.com/zh-cn/aspnet/core/performance/caching/middleware?view=aspnetcore-7.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2022-08-31 NSSM创建服务
2021-08-31 WPF 踩坑笔记8 ViewModel 延时操作UI线程
2017-08-31 没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览。