MVC运行过程365体育网投,MVC运行过程

365体育网投 1

365体育网投 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

365体育网投 3

365体育网投 4

本篇小说虽不谈架构,然而Cache又是架设中必要的有些,因而,在执教Cache的同时,将会提及到有的架构知识,关于架构部分,读者可以不用领悟,或者直接跳过,

本篇小说虽不谈架构,不过Cache又是架设中必不可少的有些,由此,在上课Cache的同时,将会提及到有的架构知识,关于架构部分,读者可以绝不通晓,或者间接跳过,

您只需关注Cache即可,具体的架构,会在后续作品中与大家大快朵颐。

您只需关注Cache即可,具体的架构,会在此起彼伏小说中与大家大饱眼福。

一   为何要在ASP.NET
项目中引入缓存

一   为何要在ASP.NET
项目中引入缓存

  1. 大家先来考虑一个题材,平时,面临高并发问题时,我们理应怎么处理?
  1. 大家先来设想一个题目,平日,面临高并发问题时,我们应当怎么处理?

下图为正规的拍卖思路和措施

下图为正常的处理思路和模式

 365体育网投 5

 365体育网投 6

2.为啥引入Cache呢?

2.怎么引入Cache呢?

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

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

       
很好,大家清楚缓存紧要解决读的题目,那么,我们读的事物重重,是不是缓存所有读的内容呢?答案是否认的。缓存首要解决这么些频繁访问,吃服务器资源,实时性要求相比低,不常更新的情节。

       
很好,大家知晓缓存紧要解决读的题材,那么,我们读的东西很多,是不是缓存所有读的始末吧?答案是否定的。缓存重要解决这么些频繁访问,吃服务器资源,实时性要求相比低,不常更新的始末。

二   ASP.NET
缓存技术概述

二   ASP.NET
缓存技术概述

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

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

在ASP.NET实际项目支出中,大家得以应用基本的二种缓存技术:页面缓存、局部页面和数目缓存

在ASP.NET实际项目开发中,我们得以拔取基本的两种缓存技术:页面缓存、局部页面和数码缓存

365体育网投 7

365体育网投 8

 1.整页缓存

 1.整页缓存

 
所谓整页缓存,指缓存整个页面,且设置刷新间隔时间,刷新间隔时间一般以秒为单位(缓存无法整个刷新,且刷新间隔不借助于外部事件);

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

 2.有些页面缓存

 2.有的页面缓存

 
 所谓部分页面缓存,也叫局部页面缓存,指通过设定影响页面的参数,此时的缓存存储页面的六个本子,一般情况需要遵照参数值为这么些页面版本设置索引;

 
 所谓部分页面缓存,也叫局部页面缓存,指通过设定影响页面的参数,此时的缓存存储页面的四个版本,一般情形需要按照参数值为那多少个页面版本设置索引;

 3.运用程序缓存

 3.运用程序缓存

 
 所谓运用程序缓存,也叫数据缓存,指将索要大量服务器资源的目标存储在内存中,在ASP.NET中,由Cache类来促成(Cache类的每个实例对应具体的各类运用程序,

 
 所谓运用程序缓存,也叫数据缓存,指将索要大量服务器资源的目标存储在内存中,在ASP.NET中,由Cache类来落实(Cache类的每个实例对应具体的各种运用程序,

其生存期倚重于采用程序的生存期,当然,如若系统重启或者断电,则另当别论。)

其生存期看重于接纳程序的生存期,当然,即使系统重启或者断电,则另当别论。)

 (二)二级缓存技术

 (二)二级缓存技术

在ASP.NET一般的档次中,大家利用二级缓存就可以解决服务器缓存问题了,如下为二级缓存的概略图。

在ASP.NET一般的门类中,我们利用二级缓存就能够解决服务器缓存问题了,如下为二级缓存的概况图。

 365体育网投 9

 365体育网投 10

1.何为顶尖缓存?

1.何为一流缓存?

 
 一流缓存,指不依靠外部缓存的缓存,上图中的二级缓存去掉外部缓存部分即为一级缓存;

 
 顶级缓存,指不依赖外部缓存的缓存,上图中的二级缓存去掉外部缓存部分即为顶级缓存;

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

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

 3.请求-处理流程:对于读数据,拔取从内向外的次第:内部缓存=》外部缓存=》数据库

 3.请求-处理流程:对于读数据,拔取从内向外的各样:内部缓存=》外部缓存=》数据库

   
(1)第一次呼吁读数据:褐色的箭头表示首次呼吁,从数据库服务器DB中得到数据,并将数据缓存在二级缓存系统中;

   
(1)第一次呼吁读数据:粉红色的箭头表示第一次呼吁,从数据库服务器DB中拿到数据,并将数据缓存在二级缓存系统中;

   
(2)非第一次呼吁读数据:先从二级缓存内部缓存中取数据体现页面,即便没有数量,则去二级缓存外部缓存中取数据突显页面,若外部缓存中并未数据,则再去数据库服务器中取数据;

   
(2)非第一次呼吁读数据:先从二级缓存内部缓存中取数据显示页面,如若没有数量,则去二级缓存外部缓存中取数据显示页面,若外部缓存中一直不数据,则再去数据库服务器中取数据;

 365体育网投 11

 365体育网投 12

 (4)对于写多少,才有从外向内顺序:数据库=》外部缓存=》内部缓存(这样做的目标,紧即使保安数据的一致性);

 (4)对于写多少,才有从外向内顺序:数据库=》外部缓存=》内部缓存(这样做的目标,紧假若爱惜数据的一致性);

4.组成二级缓存系统的表面缓存系统,一般大家可挑选MongoDB,Redis,Mencached等;

4.结合二级缓存系统的外部缓存系统,一般大家可采纳MongoDB,Redis,Mencached等;

5.基于SOA+Redis的的相似系统架构(当然,本篇随笔不谈架构,因而不会分析架构,但会在连续的作品中独立讲解架构)

5.基于SOA+Redis的的一般系统架构(当然,本篇著作不谈架构,因而不会分析架构,但会在连续的篇章中独立讲解架构)

 365体育网投 13

 365体育网投 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相关的技巧

365体育网投 15

365体育网投 16

 

 

 1.Cahe维护

 1.Cahe维护

维护网络上的,本地的Cache;

护卫网络上的,本地的Cache;

2.路由政策

2.路由政策

现实的路由策略要遵照Cache架构和设计来设定,大致讲解一下当地缓存路由政策

切切实实的路由策略要基于Cache架构和规划来设定,大致讲解一下本土缓存路由政策

365体育网投 17

365体育网投 18

 

 

3.替换算法

3.替换算法

4.预取技术

4.预取技术

5.Cache性能分析

5.Cache性能分析

借助于一些性能分析工具来分析,首要关心命中率/缓存对象大小之间关系

借助一些性质分析工具来分析,首要关注命中率/缓存对象大小之间涉及

365体育网投 19

365体育网投 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中整页缓存的语法格式

365体育网投 21

365体育网投 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:

365体育网投 23

365体育网投 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>操作即可

365体育网投 25

365体育网投 26

 (3)缓存依赖

 (3)缓存倚重

预留读者朋友们去研讨,相比较简单。

雁过拔毛读者朋友们去钻探,相比较简单。

(二)部分页面缓存

(二)部分页面缓存

 部分页面缓存,也叫页面部分缓存,重要解决在页面缓存中需要通常实时更新的一部分内容。

 部分页面缓存,也叫页面部分缓存,首要解决在页面缓存中需要日常实时更新的一局部情节。

 页面部分缓存就是缓存页面的一局部,而不是缓存整个页面,它适用于页面内一些部分或者需要更新的多寡的境况,在常用页面部分缓存的技巧下平常利用先将全方位页面缓存,然后再交替页面中不需要缓存的部分。(用AJAX局部刷新来明白)

 页面部分缓存就是缓存页面的一部分,而不是缓存整个页面,它适用于页面内一些部分或者需要革新的数额的事态,在常用页面部分缓存的技艺下日常使用先将全方位页面缓存,然后再交替页面中不需要缓存的一对。(用AJAX局部刷新来精通)

(三)运用程序缓存

(三)运用程序缓存

行使程序缓存是用来囤积与应用程序有关的靶子,首要由Cache类来贯彻(命名空间System.Web.Caching),可以以编码的法门灵活地控制缓存的操作。

运用程序缓存是用来存储与运用程序有关的对象,首要由Cache类来促成(命名空间System.Web.Caching),可以以编码的法子灵活地操纵缓存的操作。

365体育网投 27

365体育网投 28

四   版权区

四   版权区

  • 感谢您的开卷,若有不足之处,欢迎指教,共同学习、共同提高。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些随笔利用读书、参考、引用、抄袭、复制和粘贴等多种模式组成而成的,大部分为原创。
  • 如你喜欢,麻烦推荐一下;如您有新想法,欢迎指出,邮箱:2098469527@qq.com。
  • 可以转载该博客,但必须知名博客来源。
  • 感谢您的翻阅,若有不足之处,欢迎指教,共同学习、共同提高。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少一些作品利用读书、参考、引用、抄袭、复制和粘贴等多种措施组成而成的,大部分为原创。
  • 如你喜欢,麻烦推荐一下;如您有新想法,欢迎提议,邮箱:2098469527@qq.com。
  • 可以转载该博客,但不可以不闻明博客来源。

相关文章