Asp.Net Core 缓存使用_Asp.Net core 浏览器缓存(客户端缓存)
Asp.Net Core 缓存使用_Asp.Net core 浏览器缓存
一、ResponseCacheAttribute 浏览器缓存_客户端缓存
Asp.Net Core 项目中内置 ResponseCache() 缓存方式
使用方式如下:
/// <summary> /// 缓存1分钟 /// </summary> /// <returns></returns> [ResponseCache(Duration =60)] [HttpGet] public IActionResult Index() { return View(); }
浏览器缓存模式是根据浏览器 http协议 cache-control 控制:
RFC7324是HTTP协议中对缓存进行控制的规范,其中重要的是cache-control这个响应报文头。服务器如果返回cache-control:max-age=60,
则表示服务器指示浏览器端“可以缓存这个响应内容60秒”。
测试如下:
二、客户端缓存,可以配置参数使用
/* Duration 代表缓存持续时间(秒)至少1秒 VaryByHeader 设置vary 请求头信息使用vary头有利于内容服务的动态多样性。例如,使用Vary: User-Agent头,缓存服务器需要通过UA判断是否使用缓存的页面。 Location 缓存位置 None 报头设置为“no-cache”不使用缓存 Client 只缓存在客户端。设置“Cache-control”标题为“private”。 Any 缓存在代理和客户端。设置“Cache-control”标题为“public”。 NoStore 缓存中不得存储任何关于客户端请求和服务端响应的内容。每次由客户端发起的请求都会下载完整的响应内容。如果设置为False Duration必须大于0 VaryByQueryKeys 可以按照相同页面,不同的参数进行相应的存储 CacheProfileName 设置缓存配置文件的值,可以通过设置不同的缓存参数 */ [ResponseCache(Duration = 50, VaryByQueryKeys = new string[] { "q","name" })] public IActionResult Index(int q,string name) { return View(DateTime.Now); }
详情参考微软文档:
https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/response?view=aspnetcore-6.0
三、Asp.Net Core 配置相应中间件 服务器端缓存(不推荐)
此方式配合 客户端缓存 cache-control,服务器端也做缓存处理。
使用步骤:
1. 启动 服务器缓存中间件
var builder = WebApplication.CreateBuilder(args); builder.Services.AddResponseCaching(); var app = builder.Build(); app.UseHttpsRedirection(); // UseCors must be called before UseResponseCaching //app.UseCors(); app.UseResponseCaching();
提醒:
使用 CORS 中间件时,必须在 UseResponseCaching 之前调用 UseCors。
2.配置控制器缓存响应
设置方式同上。
更多:
Asp.Net Core 6获取IHttpContextAccessor方法
Asp.Net Core Mvc下载处理__Asp.Net Core Mvc文件下载
Asp.Net Core 跨域处理_Ajax 跨域处理整理