葡京会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. 咱俩先来设想一个题目,平常,面临高并发问题时,大家应该怎么处理?

下图为常规的处理思路和办法

下图为健康的处理思路和艺术

 葡京会 5

 葡京会 6

2.怎么引入Cache呢?

2.为何引入Cache呢?

       
大家精晓,造成高并发的根本原因是大气读写的题目,一般地,对于一个系统,读总是比写多,如我辈总是逛天猫商城,京东,天猫商城,唯品会等,但大家并不一定买东西(买东西,即下单,下单的操作,对应DB的Write操作),缓存主要解决读的题材(当然,在晚期的篇章中,我会讲到新闻队列MQ,也是一种缓存机制,其不仅解决读的题材,还缓解写的题材)。

       
大家领略,造成高并发的根本原因是大气读写的题材,一般地,对于一个系统,读总是比写多,如我辈总是逛Tmall,京东,天猫商城,唯品会等,但大家并不一定买东西(买东西,即下单,下单的操作,对应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地图