.net mvc中的缓存

今天我们聊一聊在.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();
}

在这里我们需要明确一点,在输出缓存中并没有滑动过期,只有绝对过期。

时间: 2024-10-07 22:25:50

.net mvc中的缓存的相关文章

谈谈MVC项目中的缓存功能设计的相关问题

本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据库),我们一般会考虑将一些更新不是很频繁的,可以重用的数据,通过一定的方式临时地保存起来,后续的请求根据情况可以直接访问这些保存起来的数据.这种机制就是所谓的缓存机制. 根据缓存的位置不同,可以区分为: 1.客户端缓存(缓存在用户的客户端,例如浏览器) 2.服务器断货(缓存在服务器中,可以缓存在内存

net mvc中angular

把angular项目整合到.net mvc中 之前的开发选择的是完全舍弃服务端,仅保留最简单web服务器提供angular经打包的静态资源,此外所有的业务与数据请求都访问一个分离的WebApi来实现.不过最近碰到一个需求,有必要使用多个客户端,而各客户端本身都是webpack打包出来的js而已,没必要每个客户端都自己建一个站点,这就有必要搭建一个服务端,根据参数动态渲染不同客户端的脚本来服务多个客户端了.主要需要解决两个问题,一是防止前后端路由冲突各自有效工作,二是如何实现一套比较合理的部署方案

Asp.Net MVC中DropDownListFor的用法(转)

2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个,最后一个不就是M吗? @Html.DropDownListFor(model=>model.First().Title, ViewData["Title"] as List<SelectListItem>, "标题", @"dropdown

spring mvc中的文件上传

使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.xml中配置上传: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> //文件上传最大是多少 <

Http请求中Content-Type讲解以及在Spring MVC中的应用

引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在Spring MVC中如何使用它们来映射请求信息. 1.  Content-Type MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息. [html] vie

Asp.net mvc中controller与view间的如何传递数据

1.      Asp.net中的页面指令 无论是在java程序中还是在.net程序中,我们总是会看见一些@指令,那么这些常见指令的作用是什么呢? ?  @Page指令 只能在.aspx页中使用.如果在其他页面中使用会发生编译错误.比较常见的属性有: 1. Language 指出在编译内联代码块和页的<script>节中出现的所有代码时所使用的语言,默认的语言是Visual Basic .NET. 2. AutoEventWireup 指出是否启用页事件.默认为true. VS.NET开发的页

警惕ASP.NET MVC中的ValidateInputAttribute

最近在做一个ASP.NET MVC项目的时候发现,有一个Controller的Action死活都没法接收到从客户端提交过来的Html表单请求和数据,后来才发现是因为默认情况下ASP.NET MVC在执行Controller的代码前,会对客户端提交到服务器的数据做安全性验证,如果ASP.NET检测到客户端提交的数据中有危险数据(危险数据一般是一些关键字和关键符号),那么就会中断当前客户端提交的请求并且引发一个异常,那么客户端提交的数据自然就不会进入到Controller和Action了.主要原因是

.net MVC中Jquery实现AJAX详解

声明 这是我一边学,一边写的: 好处是:我从新手的角度出发,谈自己的理解,每一步的操作也都是按照新手入门来做,有截图. 坏处是:部分地方可能说的不到位或错误.不过作为新手,我觉得能先帮你理解着实现功能貌似更重要. 开始: 0 前言: Ajax本质是一个web数据请求的手段,既然是请求,也就是有请,有求.也就是客户端(html页面)向服务器发送请求获得数据的手段. 世间万物万变不离其宗,抓住事物本质就能让我们拨云见日: 一.在服务器端写好方法 二.在客户端写好请求 当然在这之前我们还需要有个web

ASP.NET Web Form和MVC中防止F5刷新引起的重复提交问题

转载  http://www.cnblogs.com/hiteddy/archive/2012/03/29/Prevent_Resubmit_When_Refresh_Reload_In_ASP_NET_Web_Form_MVC.html 什么是刷新/重新载入 IE中的刷新(Refresh),在FF和Chrome中称为重新载入(Reload),与正常进入页面的区别在于以下两点: 1. 缓存控制 如果文件(比如图片)在本地缓存中已经存在,正常进入页面会不访问服务器而直接从本地加载.而对于刷新操作,