如何使用ASP.NET Core 中的响应缓存中间件

提问

ASP.NET Core 中的响应缓存中间件

回答

  1. 缓存条件
    请求必须生成带有 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 节“在缓存中存储响应”)。

  2. 配置

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

posted @   东百牧码人  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-08-31 NSSM创建服务
2021-08-31 WPF 踩坑笔记8 ViewModel 延时操作UI线程
2017-08-31 没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览。
点击右上角即可分享
微信分享提示