亚洲必赢手机浅谈缓存技术在ASP

by admin on 2019年2月26日

亚洲必赢手机 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呢?

       
大家领略,造成高并发的根本原因是大度读写的题材,一般地,对于贰个系统,读总是比写多,如作者辈连年逛Taobao,京东,天猫,唯品会等,但我们并不一定买东西(买东西,即下单,下单的操作,对应DB的Write操作),缓存首要消除读的标题(当然,在晚期的稿子中,作者会讲到新闻队列MQ,也是一种缓存机制,其不但消除读的题材,还缓解写的标题)。

       
大家精通,造成高并发的根本原因是大批量读写的难点,一般地,对于3个系统,读总是比写多,如小编辈总是逛Taobao,京东,天猫,唯品会等,但大家并不一定买东西(买东西,即下单,下单的操作,对应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)第3遍呼吁读数据:青灰的箭头表示第②回呼吁,从数据库服务器DB中取得数据,并将数据缓存在二级缓存系统中;

   
(2)非第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。
  • 能够转发该博客,但无法不盛名博客来源。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图