NET中的运用,浅谈缓存技术在ASP

大红鹰葡京会 1

大红鹰葡京会 2

【01】浅谈Google
Chrome浏览器(理论篇)

【01】浅谈Google
Chrome浏览器(理论篇)

【02】浅谈Google
Chrome浏览器(操作篇)(上)

【02】浅谈Google
Chrome浏览器(操作篇)(上)

【03】浅谈Google
Chrome浏览器(操作篇)(下)

【03】浅谈Google
Chrome浏览器(操作篇)(下)

【04】浅谈ASP.NET框架 
 

【04】浅谈ASP.NET框架 
 

【05】浅谈ASP.NET
MVC运营进程
    

【05】浅谈ASP.NET
MVC运转进程
    

【06】浅谈ASP.NET MVC
控制器
   

【06】浅谈ASP.NET MVC
控制器
   

【07】浅谈ASP.NET MVC
路由
   

【07】浅谈ASP.NET MVC
路由
   

【08】浅谈ASP.NET MVC
视图
 

【08】浅谈ASP.NET MVC
视图
 

【09】浅谈ASP.NET MVC
视图与控制器传递数据

【09】浅谈ASP.NET MVC
视图与控制传递数据的二种办法
 

【10】浅谈jqGrid 在ASP.NET
MVC中增加和删除改查
     

【10】浅谈jqGrid 在ASP.NET
MVC中增加和删除改查
     

【11】浅谈ASP.NET
页面之间传值的三种方法

【11】浅谈ASP.NET
页面之间传值的二种艺术

【12】浅谈缓存技术在ASP.NET中的运用 
     

【12】浅谈缓存技术在ASP.NET中的运用 
     

【13】浅谈NuGet在VS中的运用 
    

【13】浅谈NuGet在VS中的运用 
    

【14】浅谈ASP.NET
程序揭橥进度
         
 

【14】浅谈ASP.NET
程序公布进度
         
 

【15】浅谈数据表明和申明

【15】浅谈数据注解和表达

【16】浅谈正视注入

【16】浅谈重视注入

【17】浅谈HtmlHelper

【17】浅谈HtmlHelper

【18】浅谈基于APS.NET身份验证

【18】浅谈基于APS.NET身份验证

【19】浅谈ASP.NET MVC 模型

【19】浅谈ASP.NET MVC 模型

【20】浅谈ASP.NET MVC 单元测试

【20】浅谈ASP.NET MVC 单元测试

【21】浅谈ASP.NET MVC互联网安全;

【21】浅谈ASP.NET MVC互连网安全;

【22】浅谈ASP.NET MVC八大类扩大

【22】浅谈ASP.NET MVC八大类扩张

【23】再谈ASP.NET MVC Routing

【23】再谈ASP.NET MVC Routing

【24】浅谈ASP.NET 高级话题

【24】浅谈ASP.NET 高级话题

【25】浅谈大型ASP.NET MVC项目(含DEMO)

【25】浅谈大型ASP.NET MVC项目(含DEMO)

【26】下一多元:ASP.NET WebAPI

【26】下一星罗棋布:ASP.NET WebAPI

大红鹰葡京会 3

大红鹰葡京会 4

本篇小说虽不谈架构,可是Cache又是架设中要求的部分,因而,在讲解Cache的还要,将会提及到有个别架构知识,关于框架结构部分,读者可以绝不精通,可能直接跳过,

本篇小说虽不谈架构,不过Cache又是架设中需要的部分,由此,在教师Cache的还要,将会提及到有个别架构知识,关于架构部分,读者能够毫不精通,或然直接跳过,

你只需关怀Cache即可,具体的架构,会在继承文章中与大家享用。

你只需关怀Cache即可,具体的架构,会在继续小说中与我们享用。

一   为何要在ASP.NET
项目中引入缓存

一   为何要在ASP.NET
项目中引入缓存

  1. 咱俩先来设想1个难题,日常,面临高并发难点时,大家应该怎么处理?
  1. 咱俩先来设想贰个题材,平常,面临高并发难题时,大家应有怎么处理?

下图为常规的拍卖思路和艺术

下图为正规的拍卖思路和方法

 大红鹰葡京会 5

 大红鹰葡京会 6

2.怎么引入Cache呢?

2.为啥引入Cache呢?

       
大家了然,造成高并发的根本原因是大度读写的难题,一般地,对于一个系列,读总是比写多,如我们连年逛Tmall,京东,天猫商城,唯品会等,但大家并不一定买东西(买东西,即下单,下单的操作,对应DB的Write操作),缓存主要消除读的题材(当然,在前期的篇章中,小编会讲到音讯队列MQ,也是一种缓存机制,其不仅消除读的题材,还消除写的题材)。

       
大家了然,造成高并发的根本原因是大批量读写的题材,一般地,对于3个系统,读总是比写多,如小编辈总是逛天猫,京东,天猫商城,唯品会等,但我们并不一定买东西(买东西,即下单,下单的操作,对应DB的Write操作),缓存重要化解读的难题(当然,在晚期的小说中,小编会讲到新闻队列MQ,也是一种缓存机制,其不但消除读的标题,还缓解写的难点)。

       
很好,大家领会缓存重要化解读的题材,那么,我们读的东西很多,是还是不是缓存全部读的始末吧?答案是或不是认的。缓存主要化解这些频繁访问,吃服务器财富,实时性须求相比低,不常更新的故事情节。

       
很好,我们精通缓存首要消除读的题目,那么,大家读的东西很多,是还是不是缓存全体读的内容吗?答案是或不是定的。缓存主要消除那个频仍访问,吃服务器财富,实时性供给相比低,不常更新的内容。

二   ASP.NET
缓存技术概述

二   ASP.NET
缓存技术概述

 (一)ASP.NET缓存技术项目

 (一)ASP.NET缓存技术项目

在ASP.NET实际项目开支中,大家能够运用基本的三种缓存技术:页面缓存、局地页面和数量缓存

在ASP.NET实际项目支付中,大家得以应用基本的二种缓存技术:页面缓存、局地页面和数量缓存

大红鹰葡京会 7

大红鹰葡京会 8

 1.整页缓存

 1.整页缓存

 
所谓整页缓存,指缓存整个页面,且设置刷新间隔时间,刷新间隔时间一般以秒为单位(缓存无法整个刷新,且刷新间隔不借助于外部事件);

 
所谓整页缓存,指缓存整个页面,且设置刷新间隔时间,刷新间隔时间一般以秒为单位(缓存不能够一切刷新,且刷新间隔不借助外部事件);

 2.局地页面缓存

 2.部分页面缓存

 
 所谓部分页面缓存,也叫局地页面缓存,指通过设定影响页面包车型客车参数,此时的缓存存款和储蓄页面包车型的士七个本子,一般意况必要依照参数值为那几个页面版本设置索引;

 
 所谓部分页面缓存,也叫局部页面缓存,指通过设定影响页面包车型客车参数,此时的缓存存款和储蓄页面包车型地铁八个本子,一般景况要求根据参数值为那一个页面版本设置索引;

 3.运用程序缓存

 3.运用程序缓存

 
 所谓运用程序缓存,也叫数据缓存,指将索要大批量服务器能源的目的存储在内部存款和储蓄器中,在ASP.NET中,由Cache类来落到实处(Cache类的各类实例对应切实的各类运用程序,

 
 所谓运用程序缓存,也叫数据缓存,指将须要大批量服务器财富的对象存款和储蓄在内存中,在ASP.NET中,由Cache类来兑现(Cache类的各类实例对应切切实实的各类运用程序,

其生存期注重于选拔程序的生存期,当然,若是系统重启大概断电,则另当别论。)

其生存期依赖于接纳程序的生存期,当然,如若系统重启或许断电,则另当别论。)

 (二)二级缓存技术

 (二)二级缓存技术

在ASP.NET一般的类型中,我们使用二级缓存就足以解决服务器缓存难点了,如下为二级缓存的概况图。

在ASP.NET一般的档次中,大家选择二级缓存就足以缓解服务器缓存难点了,如下为二级缓存的轮廓图。

 大红鹰葡京会 9

 大红鹰葡京会 10

1.何为一流缓存?

1.何为超级缓存?

 
 一流缓存,指不借助外部缓存的缓存,上航海用教室中的二级缓存去掉外部缓存部分即为拔尖缓存;

 
 超级缓存,指不借助于外部缓存的缓存,上海教室中的二级缓存去掉外部缓存部分即为一级缓存;

 2.构成:由Web服务器、数据库服务器和二级缓存系统一整合合;

 2.整合:由Web服务器、数据库服务器和二级缓存系统组成;

 3.请求-处理流程:对于读数据,选取从内向外的顺序:内部缓存=》外部缓存=》数据库

 3.请求-处理流程:对于读数据,选用从内向外的各类:内部缓存=》外部缓存=》数据库

   
(1)第3回呼吁读数据:浅绛红的箭头表示第贰遍呼吁,从数据库服务器DB中获取数据,并将数据缓存在二级缓存系统中;

   
(1)第一回呼吁读数据:石绿的箭头表示第一回呼吁,从数据库服务器DB中获取数据,并将数据缓存在二级缓存系统中;

   
(2)非第①回呼吁读数据:先从二级缓存内部缓存中取数据展现页面,假若没有数量,则去二级缓存外部缓存中取数据浮现页面,若外部缓存中平昔不多少,则再去数据库服务器中取数据;

   
(2)非第三回呼吁读数据:先从二级缓存内部缓存中取数据展现页面,借使没有数据,则去二级缓存外部缓存中取数据显示页面,若外部缓存中没有多少,则再去数据库服务器中取数据;

 大红鹰葡京会 11

 大红鹰葡京会 12

 (4)对于写多少,才有从外向内顺序:数据库=》外部缓存=》内部缓存(那样做的指标,主若是保卫安全数据的一致性);

 (4)对于写多少,才有从外向内顺序:数据库=》外部缓存=》内部缓存(那样做的目标,主借使体贴数据的一致性);

4.构成二级缓存系统的外部缓存系统,一般大家可挑选MongoDB,Redis,Mencached等;

4.重组二级缓存系统的表面缓存系统,一般大家可挑选MongoDB,Redis,Mencached等;

5.基于SOA+Redis的的相似系统架构(当然,本篇小说不谈架构,由此不会分析架构,但会在持续的篇章中单独讲解架构)

5.基于SOA+Redis的的貌似系统架构(当然,本篇作品不谈架构,因而不会分析架构,但会在持续的篇章中单独讲解架构)

 大红鹰葡京会 13

 大红鹰葡京会 14

 6.怎么着保障数据的一致性?

 6.怎么样保障数据的一致性?

 
对于读数据,采纳从内向外的逐一;对于写多少,接纳从外向内的逐一;

 
对于读数据,选拔从内向外的依次;对于写多少,采取从外向内的依次;

 7.缓存的有效期?

 7.缓存的有效期?

   
大家以Memcached做表面缓存为例,对于ASP.NET内部缓存,大家会担心内部存款和储蓄器不够用,而对于Memcached,则足以绝不操心内部存款和储蓄器不够用的难点。

   
大家以Memcached做表面缓存为例,对于ASP.NET内部缓存,大家会担心内部存款和储蓄器不够用,而对此Memcached,则足以不要顾虑内部存款和储蓄器不够用的难题。

   
选择二级缓存方案,Memcaches缓存与ASP.NET缓存都要举办严刻的管住和控制,因为Memcached工作在外围,直接对数据库中的数据实行读取,

   
采取二级缓存方案,Memcaches缓存与ASP.NET缓存都要开始展览严酷的管制和控制,因为Memcached工作在外围,直接对数据库中的数据进行读取,

且她的内存空间一般较大,故它的缓存数据有效期应该依照缓存数据在应用中的实际缓存有效期来设定,不会遭逢内部不足而被放出的影响,而ASP.NET

且他的内部存款和储蓄器空间一般较大,故它的缓存数据有效期应该依照缓存数据在使用中的实际缓存有效期来设定,不会惨遭内部不足而被放走的熏陶,而ASP.NET

缓存工作在内层,间接与使用程序中的数据开始展览相互,且ASP.NET框架对自家缓存的内部存款和储蓄器空间有所限制,缓存空间过大会影响总体运用的属性,为了在

缓存工作在内层,直接与利用程序中的数据举办交互,且ASP.NET框架对本人缓存的内部存款和储蓄器空间有所限制,缓存空间过大会影响全体运用的性质,为了在

同样的内部存款和储蓄器空间下缓存更多的数目,ASP.NET缓存的有效期应该小于或等于Memcached缓存的有效期,有效期具体多久视内部存款和储蓄器空间和采纳程序访问

平等的内存空间下缓存更多的数量,ASP.NET缓存的有效期应该小于或等于Memcached缓存的有效期,有效期具体多久视内部存款和储蓄器空间和行使程序访问

频率的轻重而定,ASP.NET对允许缓存数据的有效期之和无法压倒其在Memcached中的有效期,那样才能达到规定的标准缓存数据的一致性,五个缓存的协同工作

频率的音量而定,ASP.NET对允许缓存数据的有效期之和不可能超过其在Memcached中的有效期,那样才能完毕缓存数据的一致性,多少个缓存的协同工作

,能够对运用程序的访问速度带啦不小的升官。

,能够对利用程序的访问速度带啦非常大的升高。

(三)缓存涉及到的片段相关技术

(三)缓存涉及到的一对互为表里技能

缓存是一门技术,不容许花较少的字数即可讲通晓,如下简要列举部分Cache相关的技艺

缓存是一门技术,不或然花较少的篇幅即可讲精晓,如下简要列举部分Cache相关的技术

大红鹰葡京会 15

大红鹰葡京会 16

 

 

 1.Cahe维护

 1.Cahe维护

爱抚互联网上的,本地的Cache;

保险互连网上的,本地的Cache;

大红鹰葡京会,2.路由政策

2.路由政策

具体的路由策略要依据Cache架构和布置性来设定,差不多讲解一下地面缓存路由政策

切实的路由策略要基于Cache架构和统一筹划来设定,大概讲解一下地点缓存路由政策

大红鹰葡京会 17

大红鹰葡京会 18

 

 

3.替换算法

3.替换算法

4.预取技术

4.预取技术

5.Cache品质分析

5.Cache质量分析

依傍一些属性分析工具来分析,重要关怀命中率/缓存对象大小之间关系

依靠一些属性分析工具来分析,主要关怀命中率/缓存对象大小之间涉及

大红鹰葡京会 19

大红鹰葡京会 20

 6.过期策略

 6.过期策略

合理设置过时期隙,一般以秒为单位;

理所当然设置过时期隙,一般以秒为单位;

7.数据一致性

7.数目一致性

有限支撑基本同步,读写多少的一一等;

管教基本同步,读写多少的依次等;

8.缓存级别

8.缓存级别

实际的级别,依照现实的政工供给来设定;

具体的级别,依照现实的作业供给来设定;

9.Cache技术

9.Cache技术

磁盘缓存,存款和储蓄器缓存,WWW服务器缓存等;

磁盘缓存,存款和储蓄器缓存,WWW服务器缓存等;

10.数码缓存技术

10.数额缓存技术

 客户端数据缓存,分布式数据缓存,集中式数据缓存等;

 客户端数据缓存,分布式数据缓存,集中式数据缓存等;

三   Cache在ASP.NET
MVC中的运用

三   Cache在ASP.NET
MVC中的运用

(一)整页缓存

(一)整页缓存

1.ASP.NET
MVC中有如何整页缓存?

1.ASP.NET
MVC中有哪些整页缓存?

 整页缓存是一种相比较简单且常用的缓存格局,缓存那几个页面。在ASP.NET中,整页缓存一般包蕴控制器缓存,Action缓存,Web.config缓存等;

 整页缓存是一种比较不难且常用的缓存格局,缓存那几个页面。在ASP.NET中,整页缓存一般包含控制器缓存,Action缓存,Web.config缓存等;

2.哪些页面须要整页缓存?

2.什么样页面需求整页缓存?

 一般地,整页缓存页面具有“读取频仍,数据不常更新、编写翻译时要求占用多量岁月和能源”等风味;

 一般地,整页缓存页面具有“读取频仍,数据不常更新、编写翻译时索要占用大批量日子和财富”等风味;

3.ASP.NET
MVC中整页缓存的语法格式

3.ASP.NET
MVC中整页缓存的语法格式

大红鹰葡京会 21

大红鹰葡京会 22

 

 

4.例子

4.例子

 (1)控制器缓存

 (1)控制器缓存

控制器缓存指把缓存成效于控制器。

控制器缓存指把缓存效用于控制器。

 PageCacheController.cs

 PageCacheController.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace CacheDemo.Controllers
 8 {
 9     [OutputCache(Duration = 70)]
10     public class ControllerCacheController : Controller
11     {
12         // GET: Default
13         public ActionResult ControllerCache()
14         {
15             
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19     }
20 }
21  
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace CacheDemo.Controllers
 8 {
 9     [OutputCache(Duration = 70)]
10     public class ControllerCacheController : Controller
11     {
12         // GET: Default
13         public ActionResult ControllerCache()
14         {
15             
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19     }
20 }
21  

PageCache.cshtml

PageCache.cshtml

1 @{
2     ViewBag.Title = "ControllerCache";
3 }
4 
5 <h2>ControllerCache</h2>
6 
7 <div>
8     ViewBag的值:@ViewBag.CurrentTime
9 </div>
1 @{
2     ViewBag.Title = "ControllerCache";
3 }
4 
5 <h2>ControllerCache</h2>
6 
7 <div>
8     ViewBag的值:@ViewBag.CurrentTime
9 </div>

Result:

Result:

大红鹰葡京会 23

大红鹰葡京会 24

 

 

(2)Action缓存

(2)Action缓存

Action缓存指把缓存成效于Action。控制情势缓存与控制器缓存原理大致,只可是控制器缓存把缓存功效于控制器,控制器方法缓存把缓存功效于控制器方法。那里就不上课了。

Action缓存指把缓存功能于Action。控制方法缓存与控制器缓存原理大致,只不过控制器缓存把缓存作用于控制器,控制器方法缓存把缓存效能于控制器方法。那里就不上课了。

(3)Web.config缓存

(3)Web.config缓存

Web.config缓存,有点类似于我们将数据库连接字符串添加在配置文件一律,看看上面的代码,是不是很纯熟呢?

Web.config缓存,有点类似于大家将数据库连接字符串添加在配置文件一律,看看上边包车型客车代码,是还是不是很纯熟呢?

<connectionStrings>
    <add name="SqlserverConstr" connectionString="Server=IP;db=DataBaseName;uid=UserName;pwd=Password" providerName="System.Data.SqlClient" />
  </connectionStrings>
<connectionStrings>
    <add name="SqlserverConstr" connectionString="Server=IP;db=DataBaseName;uid=UserName;pwd=Password" providerName="System.Data.SqlClient" />
  </connectionStrings>

Web.config将急需缓存的Controller或Action提取抽象到布置文件中,其实就一定于大家运用数据库连接字符串,使用时,调用即可。

Web.config将急需缓存的Controller或Action提取抽象到安排文件中,其实就一定于大家采取数据库连接字符串,使用时,调用即可。

<system.web>
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name ="WebConfiCache" duration="70"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
  </system.web>
<system.web>
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name ="WebConfiCache" duration="70"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
  </system.web>

我们将上边的控制器缓存参数用Web.config来布局

咱俩将方面包车型大巴控制器缓存参数用Web.config来布置

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace CacheDemo.Controllers
 8 {
 9     //[OutputCache(Duration = 70)]
10     [OutputCache(CacheProfile = "WebConfiCache")]
11     public class ControllerCacheController : Controller
12     {
13         // GET: Default
14         public ActionResult ControllerCache()
15         {
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19     }
20 }
21  
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace CacheDemo.Controllers
 8 {
 9     //[OutputCache(Duration = 70)]
10     [OutputCache(CacheProfile = "WebConfiCache")]
11     public class ControllerCacheController : Controller
12     {
13         // GET: Default
14         public ActionResult ControllerCache()
15         {
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19     }
20 }
21  

分析:

分析:

实在一定不难,就视作数据库连接字符串来操作依旧<appSetting>操作即可

骨子里一定简单,就视作数据库连接字符串来操作依旧<appSetting>操作即可

大红鹰葡京会 25

大红鹰葡京会 26

 (3)缓存信赖

 (3)缓存依赖

留住校读书者朋友们去钻探,比较简单。

预留读者对象们去切磋,相比简单。

(二)部分页面缓存

(二)部分页面缓存

 部分页面缓存,也叫页面部分缓存,主要消除在页面缓存中要求通常实时更新的一有的内容。

 部分页面缓存,也叫页面部分缓存,重要消除在页面缓存中必要经常实时更新的一有的剧情。

 页面部分缓存正是缓存页面的一有的,而不是缓存整个页面,它适用于页面内一些部分只怕须求更新的数码的情事,在常用页面部分缓存的技能下平时利用先将整个页面缓存,然后再交替页面中不须要缓存的一些。(用AJAX局地刷新来驾驭)

 页面部分缓存正是缓存页面包车型大巴一片段,而不是缓存整个页面,它适用于页面内有些部分只怕须要更新的数量的情形,在常用页面部分缓存的技能下平日应用先将一切页面缓存,然后再交替页面中不必要缓存的局地。(用AJAX局地刷新来理解)

(三)运用程序缓存

(三)运用程序缓存

行使程序缓存是用来储存与使用程序有关的指标,首要由Cache类来兑现(命名空间System.Web.Caching),能够以编码的法门灵活地决定缓存的操作。

行使程序缓存是用来囤积与运用程序有关的靶子,首要由Cache类来促成(命名空间System.Web.Caching),能够以编码的办法灵活地控制缓存的操作。

大红鹰葡京会 27

大红鹰葡京会 28

四   版权区

四   版权区

  • 感激您的阅读,若有不足之处,欢迎指教,共同学习、共同升高。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些文章利用读书、参考、引用、抄袭、复制和粘贴等多种措施组成而成的,大多数为原创。
  • 如你喜欢,麻烦推荐一下;如您有新想法,欢迎建议,邮箱:2098469527@qq.com。
  • 能够转发该博客,但无法不有名博客来源。
  • 多谢您的读书,若有不足之处,欢迎指教,共同学习、共同进步。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些小说利用读书、参考、引用、抄袭、复制和粘贴等二种主意结合而成的,大多数为原创。
  • 如你喜欢,麻烦推荐一下;如您有新想法,欢迎建议,邮箱:2098469527@qq.com。
  • 能够转载该博客,但不能够不有名博客来源。

相关文章

admin

网站地图xml地图