MVC缓存

MVC缓存

mvc技术交流,欢迎加群:

一、MVC缓存简介

缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期。在系统优化过程中,缓存是比较普遍的优化做法和见效比较快的做法。
MVC缓存本质上还是.NET的一套缓存体系,只不过该缓存体系应用在了MVC框架上。下面的示例把缓存应用在MVC上。

缓存的常用场景:

数据被频繁的使用,并且很少发生变化或对即时性的要求不高。

二、Control缓存

Control缓存即是把缓存应用到整个Control上,该Control下的所有Action都会被缓存起来。Control缓存的粒度比较粗,应用也比较少些。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace MvcCache.Control.Controllers
 8 {
 9     [OutputCache(Duration = 10)]
10     public class ControlController : Controller
11     {
12         //
13         // GET: /Home/
14         public ActionResult Index()
15         {
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19
20         public ActionResult Index1()
21         {
22             ViewBag.CurrentTime = System.DateTime.Now;
23             return View();
24         }
25
26     }
27 }

在名为Control的Control中加入了OutputCache,并设置持续时间为10秒(Duration=10),即每10秒后过期当再次触发时更新缓存。下面是View中的代码,打印ViewBag的时间。

 1 @{
 2     ViewBag.Title = "Index";
 3 }
 4
 5 <h2>@ViewBag.CurrentTime</h2>
 6
 7 @{
 8     ViewBag.Title = "Index1";
 9 }
10
11 <h2>@ViewBag.CurrentTime</h2>

三、Action缓存

即把缓存用到Action上,Action缓存为比较常用的缓存方式,该方式粒度细一些。使用方法类似Control缓存。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace MvcCache.Control.Controllers
 8 {
 9     //Control不加缓存
10     public class ActionController : Controller
11     {
12         //该Index的Action加缓存
13         [OutputCache(Duration = 10)]
14         public ActionResult Index()
15         {
16             ViewBag.CurrentTime = System.DateTime.Now;
17             return View();
18         }
19
20         //该Action不加缓存
21         public ActionResult Index1()
22         {
23             ViewBag.CurrentTime = System.DateTime.Now;
24             return View();
25         }
26
27     }
28 }

Index加入了缓存,而Index1没有加。此时Index1每次刷新页面都会取到当前的时间并打印。

 1 @{
 2     ViewBag.Title = "Index";
 3
 4 }
 5
 6 <h2>@ViewBag.CurrentTime</h2>
 7
 8 @{
 9     ViewBag.Title = "Index1";
10 }
11
12 <h2>@ViewBag.CurrentTime</h2>

四、使用配置文件

当我们需要将N个Control或Action加入缓存,并且缓存的参数是一致的情况下,我们可以把相关的设置放到Web.config中,并在程序中加入相应的配置。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!--
 3   For more information on how to configure your ASP.NET application, please visit
 4   http://go.microsoft.com/fwlink/?LinkId=169433
 5   -->
 6
 7 <configuration>
 8   <appSettings>
 9     <add key="webpages:Version" value="2.0.0.0" />
10     <add key="webpages:Enabled" value="false" />
11     <add key="PreserveLoginUrl" value="true" />
12     <add key="ClientValidationEnabled" value="true" />
13     <add key="UnobtrusiveJavaScriptEnabled" value="true" />
14   </appSettings>
15   <system.web>
16     <!--配置缓存-->
17     <caching>
18       <outputCacheSettings>
19         <outputCacheProfiles>
20           <add name="TestConfigCache" duration="10"/>
21         </outputCacheProfiles>
22       </outputCacheSettings>
23     </caching>
24     <!--配置缓存-->
25     <httpRuntime targetFramework="4.5" />
26     <compilation debug="true" targetFramework="4.5" />
27     <pages>
28       <namespaces>
29         <add namespace="System.Web.Helpers" />
30         <add namespace="System.Web.Mvc" />
31         <add namespace="System.Web.Mvc.Ajax" />
32         <add namespace="System.Web.Mvc.Html" />
33         <add namespace="System.Web.Routing" />
34         <add namespace="System.Web.WebPages" />
35       </namespaces>
36     </pages>
37   </system.web>
38   <system.webServer>
39     <validation validateIntegratedModeConfiguration="false" />
40
41     <handlers>
42       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
43       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
44       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
45       <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
46       <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
47       <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
48     </handlers>
49   </system.webServer>
50
51 </configuration>

配置缓存节只需要将其放在system.web节下即可,下面是使用的方法

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace MvcCache.Control.Controllers
 8 {
 9     public class ConfigController : Controller
10     {
11         //TestConfigCache为在配置文件中配置的缓存节
12         [OutputCache(CacheProfile = "TestConfigCache")]
13         public ActionResult Index()
14         {
15             ViewBag.CurrentTime = System.DateTime.Now;
16             return View();
17         }
18
19     }
20 }

注:当Control与Action都应用了缓存时,以Action的缓存为主。

五、OutputCache参数简介

下面代码为mvc4的OutputCache的定义,由于使用的是英文版本IDE和框架,因此注释全部为英文。后面的讲解主要讲解常用的属性,对于缓存依赖这个重点内容在下面单独讲解使用方法。

如果想了解各个属性的详细说明及使用请查阅MSDN,链接地址如下:https://msdn.microsoft.com/zh-cn/library/system.web.mvc.outputcacheattribute.aspx

  1 using System;
  2 using System.Web.UI;
  3
  4 namespace System.Web.Mvc
  5 {
  6     // Summary:
  7     //     Represents an attribute that is used to mark an action method whose output
  8     //     will be cached.
  9     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
 10     public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter
 11     {
 12         // Summary:
 13         //     Initializes a new instance of the System.Web.Mvc.OutputCacheAttribute class.
 14         public OutputCacheAttribute();
 15
 16         // Summary:
 17         //     Gets or sets the cache profile name.
 18         //
 19         // Returns:
 20         //     The cache profile name.
 21         public string CacheProfile { get; set; }
 22         //
 23         // Summary:
 24         //     Gets or sets the child action cache.
 25         //
 26         // Returns:
 27         //     The child action cache.
 28         public static System.Runtime.Caching.ObjectCache ChildActionCache { get; set; }
 29         //
 30         // Summary:
 31         //     Gets or sets the cache duration, in seconds.
 32         //
 33         // Returns:
 34         //     The cache duration.
 35         public int Duration { get; set; }
 36         //
 37         // Summary:
 38         //     Gets or sets the location.
 39         //
 40         // Returns:
 41         //     The location.
 42         public OutputCacheLocation Location { get; set; }
 43         //
 44         // Summary:
 45         //     Gets or sets a value that indicates whether to store the cache.
 46         //
 47         // Returns:
 48         //     true if the cache should be stored; otherwise, false.
 49         public bool NoStore { get; set; }
 50         //
 51         // Summary:
 52         //     Gets or sets the SQL dependency.
 53         //
 54         // Returns:
 55         //     The SQL dependency.
 56         public string SqlDependency { get; set; }
 57         //
 58         // Summary:
 59         //     Gets or sets the vary-by-content encoding.
 60         //
 61         // Returns:
 62         //     The vary-by-content encoding.
 63         public string VaryByContentEncoding { get; set; }
 64         //
 65         // Summary:
 66         //     Gets or sets the vary-by-custom value.
 67         //
 68         // Returns:
 69         //     The vary-by-custom value.
 70         public string VaryByCustom { get; set; }
 71         //
 72         // Summary:
 73         //     Gets or sets the vary-by-header value.
 74         //
 75         // Returns:
 76         //     The vary-by-header value.
 77         public string VaryByHeader { get; set; }
 78         //
 79         // Summary:
 80         //     Gets or sets the vary-by-param value.
 81         //
 82         // Returns:
 83         //     The vary-by-param value.
 84         public string VaryByParam { get; set; }
 85
 86         // Summary:
 87         //     Returns a value that indicates whether a child action cache is active.
 88         //
 89         // Parameters:
 90         //   controllerContext:
 91         //     The controller context.
 92         //
 93         // Returns:
 94         //     true if the child action cache is active; otherwise, false.
 95         public static bool IsChildActionCacheActive(ControllerContext controllerContext);
 96         //
 97         // Summary:
 98         //     This method is an implementation of System.Web.Mvc.IActionFilter.OnActionExecuted(System.Web.Mvc.ActionExecutedContext)
 99         //     and supports the ASP.NET MVC infrastructure. It is not intended to be used
100         //     directly from your code.
101         //
102         // Parameters:
103         //   filterContext:
104         //     The filter context.
105         public override void OnActionExecuted(ActionExecutedContext filterContext);
106         //
107         // Summary:
108         //     This method is an implementation of System.Web.Mvc.IActionFilter.OnActionExecuting(System.Web.Mvc.ActionExecutingContext)
109         //     and supports the ASP.NET MVC infrastructure. It is not intended to be used
110         //     directly from your code.
111         //
112         // Parameters:
113         //   filterContext:
114         //     The filter context.
115         public override void OnActionExecuting(ActionExecutingContext filterContext);
116         //
117         // Summary:
118         //     This method is an implementation of System.Web.Mvc.IExceptionFilter.OnException(System.Web.Mvc.ExceptionContext)
119         //     and supports the ASP.NET MVC infrastructure. It is not intended to be used
120         //     directly from your code.
121         //
122         // Parameters:
123         //   filterContext:
124         //     The filter context.
125         public void OnException(ExceptionContext filterContext);
126         //
127         // Summary:
128         //     This method is an implementation of System.Web.Mvc.IResultFilter.OnResultExecuted(System.Web.Mvc.ResultExecutedContext)
129         //     and supports the ASP.NET MVC infrastructure. It is not intended to be used
130         //     directly from your code.
131         //
132         // Parameters:
133         //   filterContext:
134         //     The filter context.
135         public override void OnResultExecuted(ResultExecutedContext filterContext);
136         //
137         // Summary:
138         //     Called before the action result executes.
139         //
140         // Parameters:
141         //   filterContext:
142         //     The filter context, which encapsulates information for using System.Web.Mvc.AuthorizeAttribute.
143         //
144         // Exceptions:
145         //   System.ArgumentNullException:
146         //     The filterContext parameter is null.
147         public override void OnResultExecuting(ResultExecutingContext filterContext);
148     }
149 }

常用属性:
1)CacheProfile:缓存使用的配置文件的缓存名称。

2)Duration:缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的。

3)OutputCacheLocation:枚举类型,缓存的位置。当设置成None时,所有缓存将失效,默认为Any。

Any:页面被缓存在浏览器、代理服务器端和web服务器端;

Client:缓存在浏览器;

DownStream:页面被缓存在浏览器和任何的代理服务器端;

Server:页面被缓存在Web服务器端;

None:页面不缓存;

ServerAndClient:页面被缓存在浏览器和web服务器端;

4)VaryByParam:用于多个输出缓存的字符串列表,并以分号进行分隔。默认时,该字符串与GET方法传递的参数或与POST方法传递的变量相对应。当被设置为多个参数时,输出缓存将会为每个参数都准备一个与之相对应的文档版本。可能值包括none,*,以及任何有效的查询串或POST参数名称。

如果您不想要为不同的已缓存内容指定参数,可以将其设置为none。如果想要指定所有的已缓存内容参数,可以设置为*。

六、缓存依赖

SqlDependency:一个值,用于标识操作的输出缓存所依赖的一组数据库名称和表名称对。SqlCacheDependency 类在所有受支持的 SQL Server 版本 (7.0, 2000, 2005) 上监视特定的 SQL Server 数据库表,数据库表发生更改时,将自动删除缓存项,并向 Cache 中添加新版本的项。

概念理解起来很简单,主要是如何应用。下面为应用实例。示例说明:数据库为本地数据库,库名:wcfDemo(写wcf教程时用的库,懒了,直接用了),监听表名:user。缓存时间为:3600秒即一小时。数据库依赖周期为500毫秒,即每0.5秒监听下数据库是否有变化,如果有变化则立即更新缓存。

第一步:建立Control,测试代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace MvcCache.Control.Controllers
 8 {
 9     public class SqlDependencyController : Controller
10     {
11         [OutputCache(CacheProfile = "SqlDependencyCache")]
12         public ActionResult Index()
13         {
14             ViewBag.CurrentTime = System.DateTime.Now;
15             return View();
16         }
17
18     }
19 }

第二步,在配置文件中配置CacheProfile为SqlDependencyCache的节,并且配置缓存对数据库的依赖。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!--
 3   For more information on how to configure your ASP.NET application, please visit
 4   http://go.microsoft.com/fwlink/?LinkId=169433
 5   -->
 6
 7 <configuration>
 8   <!--数据库连接字符串-->
 9   <connectionStrings>
10     <add name="Conn" connectionString="server=localhost;database=wcfDemo;uid=sa;pwd=123456;" providerName="System.Data.SqlClient"/>
11   </connectionStrings>
12   <!--数据库连接字符串-->
13   <appSettings>
14     <add key="webpages:Version" value="2.0.0.0" />
15     <add key="webpages:Enabled" value="false" />
16     <add key="PreserveLoginUrl" value="true" />
17     <add key="ClientValidationEnabled" value="true" />
18     <add key="UnobtrusiveJavaScriptEnabled" value="true" />
19   </appSettings>
20   <system.web>
21     <!--配置缓存-->
22     <caching>
23       <sqlCacheDependency><!--缓存的数据库依赖节-->
24         <databases>
25           <add name="UserCacheDependency" connectionStringName="Conn" pollTime="500"/><!--Conn:数据库连接字符串的名称,name随便启名,缓存节会用到-->
26         </databases>
27       </sqlCacheDependency>
28       <outputCacheSettings>
29         <outputCacheProfiles>
30           <add name="SqlDependencyCache" duration="3600" sqlDependency="UserCacheDependency:user"/><!--UserCacheDependency:数据库依赖配置节的名称,user:数据库中需要监听的表名称-->
31         </outputCacheProfiles>
32       </outputCacheSettings>
33     </caching>
34     <!--配置缓存-->
35     <httpRuntime targetFramework="4.5" />
36     <compilation debug="true" targetFramework="4.5" />
37     <pages>
38       <namespaces>
39         <add namespace="System.Web.Helpers" />
40         <add namespace="System.Web.Mvc" />
41         <add namespace="System.Web.Mvc.Ajax" />
42         <add namespace="System.Web.Mvc.Html" />
43         <add namespace="System.Web.Routing" />
44         <add namespace="System.Web.WebPages" />
45       </namespaces>
46     </pages>
47   </system.web>
48   <system.webServer>
49     <validation validateIntegratedModeConfiguration="false" />
50
51     <handlers>
52       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
53       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
54       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
55       <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
56       <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
57       <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
58     </handlers>
59   </system.webServer>
60
61 </configuration>

注意:
1)由于是缓存对数据库的依赖,此外必须包含connectionStrings的节。

2)<add name="UserCacheDependency" connectionStringName="Conn" pollTime="500"/>

connectionStringName:数据库连接字符串的名称

pollTime:监听数据库变化的周期,以毫秒为单位。即每500毫秒查看下数据库是否有变化。

3)<add name="SqlDependencyCache" duration="3600" sqlDependency="UserCacheDependency:user"/>

sqlDependency:数据依赖的节的名称+冒号+数据表名称(小写)。如果这个依赖会用到多个表,则用分号间隔开,如下所示UserCacheDependency:user;UserCacheDependency:user1

第三步:启用该数据库表的缓存依赖通知功能

打开vs命令工具行,输入:aspnet_regsql -S localhost -U sa -P 123456 -ed -d wcfDemo -et -t user

-S localhost:数据库地址

-U sa:数据库登录名

-P 123456:数据库登录密码

-d wcfDemo:数据库的名称

-t user:表名称(小写)

因为只是监听是否发生数据变化,因此表结构随意,下面的我的表结构:

第四步:测试程序,上面的例子只打印了当前时间,如果不加入缓存依赖的情况下,1小时之内都应该运行出的结果都是当前时间,每次Ctrl+F5强制刷新浏览器时不发生任务变化。当加入缓存依赖后,只要对数据库的数据进行任意修改都会更新缓存的时间,即更改数据后再刷新浏览器时会看到时间在变化。

七、代码下载

点我下载代码

八、系列教程

0.无废话MVC入门教程目录页

1.无废话MVC入门教程一[概述、环境安装、创建项目]

2.无废话MVC入门教程二[第一个小Demo]

3.无废话MVC入门教程三[路由设置及视图入门]

4.无废话MVC入门教程四[视图中的Layout使用]

5.无废话MVC入门教程五[Control与View交互]

6.无废话MVC入门教程六[Model中的验证规则]

7.无废话MVC入门教程七[Control中使用AOP]

8.无废话MVC入门教程八[MvcPager分页控件的使用]

9.无废话MVC入门教程九[实战一:用户注册与登陆]

10.无废话MVC入门教程十[实战二:用户管理]

版权:http://www.cnblogs.com/iamlilinfeng

索引

缓存简介

Control缓存

Action缓存

使用配置

OutputCache

缓存依赖

代码下载

系列教程

时间: 2024-10-05 23:50:33

MVC缓存的相关文章

MVC 缓存1

MVC 缓存 为什么要讲缓存.缓存到底有什么作用? 下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如何才能改进这种情况的响应时间了?于是在这种情况下面缓存就起作用了,这样我们就可以避免频繁的去访问服务器增加服务器的压力.现在我们来MVC 页面缓存,下面我们使用一个简单的例子之前先看一下原理 于是现在我们在分析分析如何的看一个页面是否进行了相应的缓存行为.他里面的参数含义. cache-contro

MVC 缓存

在MVC4中,要启动缓存方法是需要在Action前加上OutputCache特性. 一.如何使用 /// <summary> /// 公司简介 /// </summary> /// <returns></returns> [OutputCache(Duration = 10,Location = OutputCacheLocation.ServerAndClient,VaryByParam = "id")] public ActionRe

MVC缓存OutputCacheAttribute 类提高网站效率(转)

原文转自:http://www.cnblogs.com/iamlilinfeng/p/4419362.html 命名空间:  System.Web.Mvc 程序集:  System.Web.Mvc(在 System.Web.Mvc.dll 中) 一.MVC缓存简介 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中,缓存是比较普遍的优化做法和见效比较快的做法.MVC缓存

MVC缓存(转载)

原文地址:http://www.cnblogs.com/iamlilinfeng/p/4419362.html   一.MVC缓存简介 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中,缓存是比较普遍的优化做法和见效比较快的做法. MVC缓存本质上还是.NET的一套缓存体系,只不过该缓存体系应用在了MVC框架上.下面的示例把缓存应用在MVC上. 缓存的常用场景: 数据

MVC缓存摘要

每当来到园子就会看到好多的系列文章,看的是眼花缭乱,不知所措,究其缘由就是自己学的东西太少了!!你不学,意味着你就渐渐的面临落后,,,活到老学到老.学习是一个 习惯... 看了大牛李林峰的园子讲述了对mvc缓存的简要应用.自己也在加深对mvc的了解.简要练习下: 引用李林峰的园子:缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中,缓存是比较普遍的优化做法和见效比较快的

Asp.Net中MVC缓存详解

本文通过介绍了Asp.Net中MVC缓存的种类,以及他们之间的区别等内容,让学习者能够深入的了解MVC缓存的原理机制,以下是具体内容: 缓存是一种保存资源副本并在下次请求时直接使用该副本的技术.当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝. Web应用缓存技术大体上可以分为两类:服务端缓存和客户端缓存.两种目标都是减少重复性内容的生成和网络传输工作,因为缓存数据存储的位置不同,而分为服务端缓存和客户端缓存. 服务端缓存 服务端缓存技术关注于服务端数据查询,生成或者操作

ASP.NET MVC缓存

根据缓存的位置不同,可以区分为: ①客户端缓存(缓存在用户的客户端,例如浏览器中) ②服务器缓存(缓存在服务器中,可以缓存在内存中,也可以缓存在文件里,并且还可以进一步地区分为本地缓存和分布式缓存两种) 应该说,缓存的设计是一门较为复杂的学问,主要考虑的问题包括:要不要缓存?要缓存哪些数据?要缓存多少数据?要缓存多久?如何更新缓存(手动还是自动)?将缓存放在哪里?本文将以较为通俗易懂的方式,来看一看在MVC4的项目中,如何使用缓存功能.对于上述提到的一些具体业务问题,我这里不会进行太过深入地探讨

MVC 缓存实践(一)

为什么要讲缓存.缓存到底有什么作用? 下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如何才能改进这种情况的响应时间了?于是在这种情况下面缓存就起作用了,这样我们就可以避免频繁的去访问服务器增加服务器的压力.现在我们来MVC 页面缓存,下面我们使用一个简单的例子之前先看一下原理 于是现在我们在分析分析如何的看一个页面是否进行了相应的缓存行为.他里面的参数含义. cache-control是用于控制网

ASP.NET MVC 缓存

什么是缓存: 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期 哪里用缓存: 数据被频繁的使用,并且很少发生变化或对即时性的要求不高. 怎么用缓存: .NET自带的缓存分为 Control缓存.Action缓存.配置缓存(这是逻辑上的区分,在用法和实现上其实是一样的)通过OutputCache关键字来实现缓存.用起来是十分的容易. 我们先看下OutputCache的实现.这个实现用到了