【ASP.NET MVC系列】浅谈缓存技术在ASP.NET中之采用

亚洲必赢bwin696.com 1

【01】浅谈Google
Chrome浏览器(理论篇)

【02】浅谈Google
Chrome浏览器(操作篇)(上)

【03】浅谈Google
Chrome浏览器(操作篇)(下)

【04】浅谈ASP.NET框架 
 

【05】浅谈ASP.NET
MVC运行过程    

【06】浅谈ASP.NET MVC
控制器   

【07】浅谈ASP.NET MVC
路由   

【08】浅谈ASP.NET MVC
视图 

【09】浅谈ASP.NET MVC
视图与控制器传递数据

【10】浅谈jqGrid 在ASP.NET
MVC中增删改查     

【11】浅谈ASP.NET
页面中传值的几乎种植方法

【12】浅谈缓存技术以ASP.NET中的使 
     

【13】浅谈NuGet在VS中之动 
    

【14】浅谈ASP.NET
程序发布过程         
 

【15】浅谈数注解和说明

【16】浅谈依赖注入

【17】浅谈HtmlHelper

【18】浅谈基于APS.NET身份验证

【19】浅谈ASP.NET MVC 模型

【20】浅谈ASP.NET MVC 单元测试

【21】浅谈ASP.NET MVC网络安全;

【22】浅谈ASP.NET MVC八挺接近扩展

【23】再谈ASP.NET MVC Routing

【24】浅谈ASP.NET 高级话题

【25】浅谈大型ASP.NET MVC项目(含DEMO)

【26】下一样多级:ASP.NET WebAPI

亚洲必赢bwin696.com 2

本篇文章就未摆架构,但是Cache又是架设中必要的有,因此,在授课Cache的又,将会提及到一些架构知识,关于架构部分,读者可以不要理解,或者直接跳过,

公只有需要关注Cache即可,具体的架构,会以连续文章被同大家分享。

一如既往   为什么要当ASP.NET
项目被引入缓存

  1. 咱们事先来设想一个题材,通常,面临高并发问题时常,我们相应怎么处理?

产图为正常的拍卖思路与办法

 亚洲必赢bwin696.com 3

2.为何引入Cache呢?

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

       
很好,我们知晓缓存主要解决读之题目,那么,我们念之东西很多,是不是缓存所有读之始末为?答案是否认的。缓存主要解决那些频繁访问,吃服务器资源,实时性要求较没有,不常更新的始末。

次   ASP.NET
缓存技术概述

 (一)ASP.NET缓存技术项目

于ASP.NET实际项目支出中,我们得使用基本的老三种缓存技术:页面缓存、局部页面和数据缓存

亚洲必赢bwin696.com 4

 1.整页缓存

 
所谓整页缓存,指缓存整个页面,且设置刷新间隔时间,刷新间隔时间一般以秒为单位(缓存不可知全刷新,且刷新间隔不依赖外部事件);

 2.片段页面缓存

 
 所谓部分页面缓存,也吃局部页面缓存,指通过设定影响页面的参数,此时的休养存存储页面的差不多单版,一般景象用按参数值为这些页面版本设置索引;

 3.以程序缓存

 
 所谓动程序缓存,也吃数据缓存,指将急需大量服务器资源的靶子存储在内存中,在ASP.NET中,由Cache类来贯彻(Cache类的每个实例对承诺切切实实的每个运用程序,

该生存期依赖让用程序的生存期,当然,如果系统还开或者断电,则其它当别论。)

 (二)二级缓存技术

于ASP.NET一般的品类面临,我们采取二级缓存就得缓解服务器缓存问题了,如下为二级缓存的轮廓图。

 亚洲必赢bwin696.com 5

1.何也一级缓存?

 
 一级缓存,指不负外部缓存的缓存,上图备受之二级缓存去丢外部缓存部分即为一级缓存;

 2.结:由Web服务器、数据库服务器和二级缓存系统组成;

 3.请求-处理流程:对于读数据,采用自内往外之一一:内部缓存=》外部缓存=》数据库

   
(1)首糟糕呼吁读数据:蓝色之箭头表示首蹩脚呼吁,从数据库服务器DB中落数据,并拿数据缓存在二级缓存系统受;

   
(2)非首坏呼吁读数据:先打二级缓存内部缓存中取数据显示页面,如果没有数,则去二级缓存外部缓存中取数据显示页面,若外部缓存中从未数据,则还失数据库服务器中取数据;

 亚洲必赢bwin696.com 6

 (4)对于刻画多少,才起从外向内顺序:数据库=》外部缓存=》内部缓存(这样做的目的,主要是保安数据的一致性);

4.组成二级缓存系统的表缓存系统,一般我们只是卜MongoDB,Redis,Mencached等;

5.基于SOA+Redis的的一般系统架构(当然,本篇文章非发话架构,因此无会见分析架构,但会当此起彼伏的篇章被独立教架构)

 亚洲必赢bwin696.com 7

 6.如何保证数据的一致性?

 
对于读数据,采用由内为他的各个;对于刻画多少,采用从外向内的依次;

 7.缓存的有效期?

   
我们坐Memcached做表面缓存为例,对于ASP.NET内部缓存,我们见面担心内存不够用,而对Memcached,则足以毫不担心内存不够用的题目。

   
采用二级缓存方案,Memcaches缓存与ASP.NET缓存还要开展严厉的军事管制与控制,因为Memcached工作以外围,直接指向数据库被的数额进行读取,

犹他的内存空间一般比较生,故其的缓存数据有效期应该依据缓存数据在使中之莫过于缓存有效期来设定,不见面被内部不足而为假释的熏陶,而ASP.NET

缓存工作于内层,直接与下程序中之数据开展互动,且ASP.NET框架对自己缓存的内存空间有所限制,缓存空间了大会影响整运用的特性,为了以

平的内存空间下缓存更多之多少,ASP.NET缓存的有效期应该小于或当Memcached缓存的有效期,有效期具体多长时间视内存空间和采取程序访问

频率之高低而定,ASP.NET对允许缓存数据的有效期的与免可知压倒其以Memcached中的有效期,这样才会落得缓存数据的一致性,两只缓存的协同工作

,可以针对运程序的访问速度带啦很十分的提升。

(三)缓存涉及到的局部系技术

缓存是如出一辙派别技术,不可能花较少之篇幅即可讲明白,如下简要列举部分Cache相关的技艺

亚洲必赢bwin696.com 8

 

 1.Cahe维护

维护网络达到的,本地的Cache;

2.路由政策

现实的路由策略要因Cache架构和统筹来设定,大致讲解一下地方缓存路由政策

亚洲必赢bwin696.com 9

 

3.替换算法

4.预取技术亚洲必赢bwin696.com

5.Cache性能分析

赖一些特性分析工具来分析,主要关心命中率/缓存对象大小之间关系

亚洲必赢bwin696.com 10

 6.过期策略

成立设置过间隙,一般坐秒为单位;

7.数量一致性

担保核心同步,读写多少的各个等;

8.缓存级别

切切实实的级别,根据现实的事情需要来设定;

9.Cache技术

磁盘缓存,存储器缓存,WWW服务器缓存等;

10.数据缓存技术

 客户端数据缓存,分布式数据缓存,集中式数据缓存等;

其三   Cache在ASP.NET
MVC中的使

(一)整页缓存

1.ASP.NET
MVC中生出哪些整页缓存?

 整页缓存是同种植比较简单且常用之缓存方式,缓存是页面。在ASP.NET中,整页缓存一般包括控制器缓存,Action缓存,Web.config缓存等;

2.哪页面需要整页缓存?

 一般地,整页缓存页面具有“读取频繁,数据不常更新、编译时要占用大量时空以及资源”等特征;

3.ASP.NET
MVC中整页缓存的语法格式

亚洲必赢bwin696.com 11

 

4.例子

 (1)控制器缓存

控制器缓存指将缓存作用为控制器。

 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  

PageCache.cshtml

1 @{
2     ViewBag.Title = "ControllerCache";
3 }
4 
5 <h2>ControllerCache</h2>
6 
7 <div>
8     ViewBag的值:@ViewBag.CurrentTime
9 </div>

Result:

亚洲必赢bwin696.com 12

 

(2)Action缓存

Action缓存指将缓存作用于Action。控制方式缓存与控制器缓存原理差不多,只不过控制器缓存把缓存作用被控制器,控制器方法缓存把缓存作用被控制器方法。这里虽非教了。

(3)Web.config缓存

Web.config缓存,有硌类似于我们用数据库连接字符串添加于安排文件一律,看看下面的代码,是否死熟悉呢?

<connectionStrings>
    <add name="SqlserverConstr" connectionString="Server=IP;db=DataBaseName;uid=UserName;pwd=Password" providerName="System.Data.SqlClient" />
  </connectionStrings>

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>

我们拿方的控制器缓存参数用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  

分析:

实质上一定简单,就作数据库连接字符串来操作还是<appSetting>操作即可

亚洲必赢bwin696.com 13

 (3)缓存依赖

养读者朋友等去研究,比较简单。

(二)部分页面缓存

 部分页面缓存,也让页面部分缓存,主要解决在页面缓存中得时实时更新的一模一样部分内容。

 页面部分缓存就是缓存页面的同样局部,而休是缓存整个页面,它适用于页面内一些部分或者得创新的数据的情,在常用页面部分缓存的技艺下时使用先用尽页面缓存,然后再交替页面中莫待缓存的有的。(用AJAX局部刷新来解)

(三)运用程序缓存

采取程序缓存是因此来储存和应用程序有关的目标,主要出于Cache类来贯彻(命名空间System.Web.Caching),可以坐编码的主意灵活地控制缓存的操作。

亚洲必赢bwin696.com 14

四   版权区

  • 谢你的阅读,若发生不足之处,欢迎指教,共同学习、共同进步。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 最好少一些文章以读、参考、引用、抄袭、复制与糊等多方法结合而成为的,大部分也原创。
  • 一旦你喜爱,麻烦推荐一下;如你有新想法,欢迎提出,邮箱:2098469527@qq.com。
  • 可转载该博客,但不能不著名博客来源。

相关文章