【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。
  • 得转载该博客,但要著名博客来源。

相关文章

admin

网站地图xml地图