一、缓存方式
1.客户端启用缓存
RFC7324是HTTP协议中对缓存进行控制规范,其中重要的cache-control这个响应报文头。如果服务器返回cache-control:max-age=60,则表示服务器指示浏览器端可以缓存这个响应60秒。
控制器方法体上加注解[ResponseCache(Duration=秒)]。
2.服务器端缓存很鸡肋
用法:app.MapController()之前加上app.UseResponseCacheing()。
如果有跨域问题确保在app.UseCors()写到App.UseResponseCacheing()之前。
鸡肋:如果客户端禁止缓存,由于请求报文体中会携带cache-control:no-cache
所有服务端也会禁止缓存。
3.内存缓存
用法:
1.注册服务builder.Services.AddMemoryCache();
2.注入IMemoryCache接口,接口以及扩展方法:CreateEntry、TryGetValue、Remove、Set、GetOrCreate、GetOrCreateAsync
3.GetOrCreateAsync用法
gugu
二、缓存过期策略
绝对过期时间为10秒
滑动过期
三、缓存穿透
如果穿得id不存在数据库里没有,每一次都要执行数据库操作。大量请求会导致穿透
解决办法
四、缓存雪崩
合理设置key