今天我们聊一聊在.net mvc中的缓存是什么以及如何来实现缓存?
1.首先我们看一看什么缓存?
缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。这里是指在电脑中的缓存,那么我们在看看在程序的中的缓存的是什么定义?
在程序中的缓存指的就是:客户端在第一次向服务器请求的数据的时候,服务器会根据客户端的请求来响应客户端所需要的数据,并同时会在服务器中的一块内存中存储一份相同的相同的数据,以方便于客户端下次再次请求同一个数据的时候,服务器会直接从缓存中获取数据,而不必再次向数据库端来进行索要数据。从而大大提高了应用程序的的运行效率。
客户端第一次向服务器索要数据如图所示:
第二次请求数据图:
由以上两图我们可以很清楚的看出缓存的一个流程图。
3.使用缓存的优点和缺点?
01.使用缓存机制的优点:大大的提高的程序的运行效率。
02.使用缓存机制的缺点:有一些应用程序在并不是很适合使用缓存机制:例如股票,天气等等需要时时更新的程序,还有就是对于缓存数据的释放时间,如果一个的缓存数据过多,那么就会大大增加服务器的承受的压力。从而很有可能导致服务器的崩溃。
通过两个我们发现,在使用缓存的时候,需要我们程序员根据相应的应用程序,来处理相应的缓存数据。
下面我们来看看在.net mvc中的缓存技术:
在.net mvc有相应的两种缓存技术:1.应用程序的缓存。2.输出缓存。
应用程序的缓存:通过.net 提供的CaChe对象来进行的数据的缓存,Cache的作用域来相当于Application对象类似。
//设置常量 const string MyCaChe = "LonginUser"; //设置缓存 public List<User> UserList { get { //根据key查看缓存中是否存在该缓存值 List<User> list=(List<User>)HttpContext.Cache[MyCaChe]; if (list==null) { //不存在数据的时候,从数据库读取数据 list=db.Users.ToList(); //使用最简单的方法来设置缓存
HttpContext.Cache[MyCaChe]=list;
//使用Insert方法来设置缓存数据,设置到缓存对象中,第一个参数是缓存的Key值,第二个参数为实际值,第三个参数是是否依赖缓存,第四个参数为设置过期时间 //在这里我使用的是20秒后过期,第五个参数为设置缓存的过期方式,是滑动过去,还是绝对过期。 HttpContext.Cache.Insert(MyCaChe,list,null,DateTime.UtcNow.AddSeconds(20),System.Web.Caching.Cache.NoSlidingExpiration); //当然我们也可以移除缓存
HttpContext.Cache.Romve(MyCaChe);//这里的参数为指定的Cache的key值 //不使用以上的方法也是可以的,.net机制有自动删除的功能。
} return list; }
2.输出缓存
该缓存使用于将整个页面都进行缓存的时候使用只需要在所需要缓存的页面上打上[OutPutCache]的特性标签就可以了。以下是[OutPutCache]特性中可以加上的一些参数
例如我们可以为首页来进行输出缓存
//设置的过去时间为5秒 [OutputCache(Duration = 5] public ActionResult Index() { return View(); }
在这里我们需要明确一点,在输出缓存中并没有滑动过期,只有绝对过期。