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);
}

C#WebApi 对数据进行缓存加快前请求数据的速度的更多相关文章

  1. 解决IE浏览器缓存导致AJAX请求数据异常

    IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面<head>标签里,加上以下声明: <!-- 解决 ...

  2. jqGrid怎么设置初始化页面时不加载数据(不向服务器请求数据)

    最近做一些表格一直用到jqGrid,今天遇到一个问题: 1.就是页面加载的时候数据不显示,点击搜索才根据请求从服务器返回并显示内容. 2.默认不从服务器请求数据(不然在开发者工具下会显示请求不到数据的 ...

  3. thinkphp框架,数据动态缓存后,或数据已读取出来,想分页怎么办

    //读取缓存后赋值到数组,通过array_slice函数处理,如: $blog = S('blogname'); //赋值 $count = count($blog); //条数统计 $page = ...

  4. Python接口测试-以&连接拼接字典数据(get中url请求数据)

    get请求的utl数据是这样的,例如:/banner/findBanner?bannerType=1&_=1556107073181 ''' 1-banner图-banner/findBann ...

  5. 加快http请求图片的速度

    在web网页里面经常需要请求图片,为了减少图片的http请求,总共有三种办法 使用map和area,具体看下面的链接 http://www.w3school.com.cn/tags/att_area_ ...

  6. 前端缓存API请求数据

    1. 背景 在一些项目中,有时候会出现不同模块重复请求大量相同api接口的情况,特别是在一些功能相似的后台管理页面中.以下面这几个页面为例,每次进入页面都需要请求等大量重复的下拉框数据,下拉框数据短时 ...

  7. MVC缓存02,使用数据层缓存,添加或修改时让缓存失效

    在"MVC缓存01,使用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有效时间.但这个还不够"智能",常常希望在编辑或创建的时候使缓存失效,加载新的数据. ...

  8. MVC缓存,使用数据层缓存,添加或修改时让缓存失效

    在"MVC缓存01,运用控制器缓存或数据层缓存"中,在数据层中可以设置缓存的有用时刻.但这个还不够"智能",常常期望在修改或创立的时分使缓存失效,加载新的数据. ...

  9. Memcache线上常见问题(缓存雪崩、缓存无底洞、永久数据被踢)

    缓存雪崩现象 一般是由于某个节点失效,导致其它节点的缓存命中率下降,缓存中缺失的数据直接去数据库查询,短时间内造成数据库服务器崩溃. 或者是由于缓存周期性失效,比如设置每隔6个小时失效一次,那么每6个 ...

  10. region URL请求数据

    #region URL请求数据 /// <summary> /// HTTP POST方式请求数据 /// </summary> /// <param name=&quo ...

随机推荐

  1. Kotlin 字符串教程:深入理解与使用技巧

    Kotlin 字符串 字符串用于存储文本. 字符串包含由双引号包围的字符集合: 示例 var greeting = "Hello" 与 Java 不同,您不必指定变量是字符串.Ko ...

  2. Springboot实现HTML表单from简单的接收信息

    HTML< from >元素 from可向Web服务器提交请求 普遍格式: <from action="服务器地址" method="请求方式" ...

  3. python性能分析器:cProfile

    代码: (1) import cProfile import re cProfile.run('re.compile("foo|bar")') 运行结果: (2) import c ...

  4. T800机器人图片 —— 强大的好莱坞电影工业,T800机器人模型也如此精细真实!

    视频地址: https://www.ixigua.com/6764744689003266571

  5. 网友开放的开源项目:网页版的A*算法可视化演示程序

    相关项目: https://xueqiaoxu.me/#projects 项目介绍: A JavaScript path-finding library for grid based games. I ...

  6. 什么是3D扫描技术?

    相关: https://www.bilibili.com/video/BV1fN4y1z7uD/?vd_source=f1d0f27367a99104c397918f0cf362b7 接触式:就是使用 ...

  7. 两个 RTX2070 super 显卡 可不可以通过 nvlink交换机 进行P2P通信 呢? (答案: 可以)

    以前转载了一篇文章:    https://www.cnblogs.com/devilmaycry812839668/p/12370685.html 对于里面的结果总感觉有所怀疑,于是斥巨资购入两个 ...

  8. Jax框架支持的python和numpy版本

    官方: https://jax.readthedocs.io/en/latest/deprecation.html 每个推出的JAX版本都会支持45个月内推出的python,对此具体解释一下: 比如J ...

  9. ubuntu18.04环境下如何为 vs code 实现ftp功能

    如前文所述  https://www.cnblogs.com/devilmaycry812839668/p/14797739.html , 在vs code 自身环境下的ftp功能插件难以使用,而在W ...

  10. 解决GitHub不显示图片问题——GitHub图片显示失败

    在Github上打不开图片是一个极为常见的事情,出现这样的问题的原因就是我们的主机无法正确解析图片所在主机域名对应的IP地址,下面给出一个在本地主机(window10)上使用ping命令解析目标主机域 ...