必威【ASP.NET MVC系列】浅谈缓存技术于ASP.NET中的行使。【ASP.NET MVC系列】浅谈缓存技术于ASP.NET中之以。

必威 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. 我们事先来设想一个题材,通常,面临高并发问题常常,我们理应怎么处理?

下图为正常的处理思路与道

产图也常规的处理思路和艺术

 必威 5

 必威 6

2.为何引入Cache呢?

2.怎么引入Cache呢?

       
我们知道,造成高并发的根本原因是大方读写的题材,一般地,对于一个系统,读总是比写多,如我们连逛淘宝,京东,天猫,唯品会等,但我们并不一定买东西(买东西,即下单,下单的操作,对诺DB的Write操作),缓存主要解决读的题材(当然,在后期的篇章被,我会说到信息队列MQ,也是一致种缓存机制,其不仅解决读的题材,还缓解写的题目)。

       
我们解,造成高并发的根本原因是大方读写的题材,一般地,对于一个系统,读总是比写多,如我们连逛淘宝,京东,天猫,唯品会等,但我们并不一定买东西(买东西,即下单,下单的操作,对诺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)首涂鸦呼吁读数据:蓝色的箭头表示首坏呼吁,从数据库服务器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。
  • 可以转载该博客,但不能不著名博客来源。

相关文章

Leave a Comment.