Skip to main content

8 ASP.NET Core

缓存

客户端响应缓存

使用 cache-control 响应报文头, 实现客户端缓存这一请求的结果一段时间, cache-control: max-age=20 表示在浏览器中缓存 20 秒

// 设置缓存 20 秒
[ResponseCache(Duration = 20)]
[HttpGet}
public int GetNum()
{
    return 10;
}

服务器端响应缓存

app.UseCors();

// 启用服务器端响应缓存
app.UseResponseCaching();

app.MapControllers();

当使用"禁用缓存"时, 浏览器端请求时带有请求头 cache-control: no-cache, 即使启用了服务器端响应缓存, 服务器也不会从缓存中获取数据

服务器端响应缓存的问题

  • 无法解决恶意请求给服务器带来的压力
  • 响应状态码为 200 的 GET 或 HEAD 响应才可能被缓存, 报文头中不能含有 Authorization, Set-Cookie 等