.NetCore实现接口缓存的方法

  介绍

这篇文章将为大家详细讲解有关。NetCore实现接口缓存的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

我们平时做开发的时候肯定都有用到缓存这个功能,一般写法是在需要的业务代码里读取缓存,判断是否存在,不存在则读取数据库再设置缓存这样一个步骤。但是如果我们有很多地方业务都有用到缓存,我们就需要在每个地方都写关于缓存的代码,这样会造成很多重复代码,同时对业务侵入不利于后续的开发维护。

是将缓存的功能提取出来,然后在需要用到缓存的地方调用即可。这样确实减少了很多重复代码,但这样还是会存在整个项目通用的缓存功能侵入业务代码,那我们有什么办法将缓存功能完全提取出来,达到业务代码零侵入呢?

3,既然我们缓存存的是接口的业务数据,那么为何我们不能直接把整个接口缓存起来呢,即将整个接口返回的数据缓存?同时要达到业务零侵入,那我们是不是想到了反射,特性呢?没错,我们使用的就是ActionFilterAttribute,关于ActionFilterAttribute无非就是OnActionExecuting(执行动作方法前触发),OnActionExecuted(执行动作方法后触发),OnResultExecuting(在执行操作结果之前触发),OnResultExecuted(在执行操作结果之后触发)这四个方法,相信很多小伙伴都用到过,这里就不细说了。那我们现在的解决方案是:在OnActionExecuting(执行动作方法前触发)里判断是否存在缓存,如果存在则不去执行接口业务,直接返回数据。还有一个问题,一般接口都会有入参,入参不同输出的数据也不同(比如我有一个分页的接口,传参的页面数不同,得到的结果也不同),这个怎么解决呢?我们只需要把接口所有参数拼凑起来,然后MD5加密成一个字符串,将其作为缓存的钥匙,那么即使同一个接口,参数不同也会得到不同的关键。

4,废话不多说,直接上代码。

公共类ApiCache: ActionFilterAttribute
  {///& lt; summary>///头是否参与缓存验证///& lt;/summary>
  公共bool SignHeader=false;///& lt; summary>///缓存有效时间(分钟)///& lt;/summary>
  公共int CacheMinutes=5;///& lt; summary>//////& lt;/summary>///& lt;参数name=癝ignHeader"在头是否参与请求体签名& lt;/param>///& lt;参数name=癈acheMinutes"在缓存有效时间(分钟)& lt;/param>
  公共ApiCache (bool SignHeader=false, int CacheMinutes=5)
  {
  这一点。SignHeader=SignHeader;
  这一点。CacheMinutes=CacheMinutes;
  }
  
  
  公共覆盖空白>关于.NetCore实现接口缓存的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

.NetCore实现接口缓存的方法