OutputCache输出缓存是复制ASP.NET页面,保存在内存的机制。这种行为有助于提高性能,通过返回的缓存达到网页及时响应的目的,减少客户机器需要对页面的渲染。如果一个页面需要很多的时间来渲染,缓存可以显著提高性能。尽管如此,OutputCache也有很大的缺点,如果你的网站需要为用户穷自定义的页面或信息,你不能用到缓存页面来达到你的效果。但是OutputCache支持配置选项,避免了这个缺点,它的配置也是非常强大的。
2. 配置地方
1)OutputCache可以配置在webconfig,作为全局的配置。也可以配置在Controller、Action上。
webconfig配置:
<system.web> <caching> <outputCacheSettings> <outputCacheProfiles> <add name="profile" duration="30" enabled="true" varyByParam="*"/> </outputCacheProfiles> </outputCacheSettings> </caching> </system.web>
Controller、Action:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MVCFilter.Controllers { [OutputCache(Duration = 20, VaryByParam = "*")] public class DefaultController : Controller { //[OutputCache(Duration = 20, VaryByParam = "*")] public ActionResult Index(string id) { return this.Json(DateTime.Now.ToString("T"),JsonRequestBehavior.AllowGet); } } }
3.详细配置
<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None | ServerAndClient " Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" VaryByContentEncoding="encodings" CacheProfile="cache profile name | ‘‘" NoStore="true | false" SqlDependency="database/table name pair | CommandNotification" ProviderName="Provider Name" %>
配置参数 说明Duration 必填值。
代表页面缓存的秒数。设置这个属性,,page或user control建立一个过期策略的HTTP响应对象,并会自动缓存page或user control的输出。
Location OutputCacheLocation 枚举的值,默认值为Any。
注意:不支持.aspx文件。
Shared user control分享到不同的页面。默认是false。
注意:不支持.aspx文件。
VaryByControl 一个以分号分隔的列表字符串用于不同用户控制的输出缓存。
VaryByCustom 如果值=broswer,则缓存的是浏览器不同的名称和版本信息。如果是自定义的字符串,你要重写GetVaryByCustomString方法。
VaryByHeader 基于指定的标头中的变动改变缓存条目。
一个以分号分隔的列表用于不同的HTTP头的输出缓存。当这个属性被设置为多个标题,输出缓存包含一个不同请求文档的版本、headers。
设置VaryByHeader属性是允许在所有HTTP 1.1中缓存,不只是ASP.NET。
此属性不支持user controls。
VaryByParam Request 中变量的名称,这些变量名应该产生单独的缓存条目。"none" 表示没有变动。"*" 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 ";" 进行分隔。
VaryByContentEncoding 一个以分号分隔的列表字符串用于不同输出缓存。VaryByContentEncodings属性使用theAccept-Encoding头来确定缓存的响应是不同的内容编码服务。关于如何指定接受编码标头的更多信息,参见14.3节的超文本传输协议(HTTP / 1.1规范在W3C网站上。
CacheProfile 缓存设置的名称与该页面。这是一个可选属性,默认为空字符串(" ")。
NoStore 一个布尔值来决定是否要防止敏感信息的二级存储。
SqlDependency 一个字符串值,用来识别一组数据库和表名对一个页面或控制的输出缓存依赖。注意theSqlCacheDependency类监控表在输出缓存依赖于一个数据库,这样,当更新表中的物品,这些物品是使用基于轮询时从缓存中删除。当使用通知(Microsoft SQL Server 2005)CommandNotification价值,最终SqlDependency类用于注册查询通知与SQL Server 2005服务器。
ProviderName 一个字符串值,表明所使用的自定义输出缓存提供程序。有关更多信息,请参见这个话题和条目的备注部分可扩展与ASP.NET 4(VS 2010和。Scott Guthrie的博客上净4.0系列)
可以继续查看我的文章
C# - 缓存OutputCache(二)缓存详细介绍