C#WebApi 对数据进行缓存加快前请求数据的速度
using ClassLibrary1; using ClassLibrary2; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Logging; using WebApplication1.IServices; using WebApplication1.Utility.SwaggerExt; namespace WebApplication1.Controllers { public class HomeController :BaseController { public readonly ILogger<HomeController> logger; public HomeController(IMemoryCache memoryCache, ILogger<HomeController> logger) : base(memoryCache) { this.logger = logger; } /// <summary> /// 测试缓存API /// 创建缓存 CreateEntry /// 删除缓存 Remove /// 获取换粗 TryGetValue /// </summary> /// <param name="i"></param> /// <param name="y"></param> /// <returns></returns> [HttpGet] public async Task<ActionResult<Book?>> GetBookById(long id) { //Book? result = MyDbContext.GetById(id); //// 没有从数据库找到对应的书籍信息 //if(result == null) //{ // return NotFound($"找不到id={id}书籍"); //}else //{ // return result; //} // GetOrCreateAsync 方法如果没有找到 key 值的缓存 就会走回调函数 返回所需要的数据 并在缓存创建相应的缓存 logger.LogDebug($"开始执行缓存API测试ID = ${id}"); Book? b = await memoryCache.GetOrCreateAsync("Book" + id, async (e) => { logger.LogDebug($"缓存 中没有找到需要查找的数据,到数据库查询 ID={id}"); return await MyDbContext.GetByIdAsync(id); }); logger.LogDebug($"GetOrCreateAsync结果{b}"); if (b == null) { return NotFound($"找不到id={id}书籍"); }else { return Ok(b); } } } }
Book 类:
namespace WebApplication1 { public record Book(long id,string name); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
2022-10-21 打包项目的时候出错 Multiple assets emit different content to the same filename index.html
2022-10-21 yarn 和 npm 不能混合使用
2022-10-21 路由守卫有哪些 ?