如何使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章