奔腾不止
此后如竟没有炬火,我便是唯一的光......

缓存:一种快速获取数据的技术;

1,把耗费大量资源或时间获取的数据,存放在一个能够快速获取的地方(缓存区);

2,这样下次就可以直接在缓存区内快速获取;

常用于CPU,浏览器,数据库;

为啥能快取?

1,存储位置不同,如:本地比服务器快,内存比磁盘快;

2,不用计算:把上次计算结果直接存放,下一次直接取;

缓存区的数据设置过期时间:

1,永不过期:和项目运行周期一致

2,绝对过期时间(常用):在设置的过期时间前有效,简单粗暴;

3,滑动过期时间:最后一次访问算起,到设置的过期时间结束,类似session失效机制;

有效期内的缓存也会被ASP.NET(Framework)或被开发人员(Core)自定义清除:

因缓存要消耗更多的内存,ASP.NET或开发人员会进行一些调整,当内存消耗很多,进而影响性能时(缓存不一定越多越好),会自动清理缓存(按设置的优先级清理);

.NET Core不会自动清理,所以需要开发人员自行限制缓存容量;

MVC中缓存:

public ActionResult Index()

{

   string cacheKey="小王";

//先去缓存中取数据

  IndexModel model=HttpCotext.Cache.Get(cacheKey) as IndexModel;

  if(model==null)

  {

  //从数据库取数据

      model=service.GetBy("小王");

   //添加缓存

     HttpContext.Cache.Add(cacheKey,modle,null,DateTime.MaxValue,new TimeSpan(0,0,5),CacheItemPriority.NotRemovable,

                  (k,v,r)=>{Trace.WriteLine($"cache with key{k} and value{v} is deleted,reason{r}")})

  }//else nothing

 

 return view();

}

OutputCache(页面缓存):

[OutputCache(

Duration(缓存多久)=10,

Location(缓存在哪里)=System.Web.UI.OutputCacheLocation.Any(默认服务器端),

VaryByParam(根据url参数(id)变化)=''id'',

)]

public ActionResult Index()

{

   return view();

}

 

posted on 2020-10-01 16:11  奔腾不止  阅读(174)  评论(0编辑  收藏  举报