【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.