<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add duration="60" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
2.部分页面缓存
缓存后替换
采用声明方式,使用Substitution控件,设置MethodName属性所需的方法,此方法必须是静态方法,因为当前页输出缓存时,页面实例还没被创建。注:AdRotator内部使用了缓存后替代。
以编程方式设置缓存后替换,使用Response.WriteSubstitution()方法,好处:1,此方法引用的方法不一定是当前类的方法,可以是另一个类的实力或静态方法。2,可以在自定义控件中使用此方法实现缓存后替换。
部分页面缓存:用户控件缓存
给用户控件添加<%@ OutputCache%>指令。此指令包含一个Shared属性,可设置共享用户控件的输出缓存。
以编程方式设置用户控件缓存
当用户控件中包括<%@ OutputCache%>指令时,可以通过用户控件的CachePolicy属性所暴露的ControlCachePolicy类的实例的属性控制修改空间如何缓存。
创建用户控件缓存的文件依赖
可以使用CacheControlPolicy.Dependency属性在一个缓存了的用户控件和文件系统中一个文件间创建一个依赖,示例代码:
PageLoad:
CacheDependency depend=new CacheDependency(MapPath("~/test.xml"));
this.CachePolicy.Dependency=depend;
缓存动态载入的用户控件
可以使用Page.LoadControl()方法载入用户控件,当具有缓存特性的用户控件被载入时,Asp.net Framework自动一个PartialCachingControl类的实例包装用户控件。示例代码:
PageLoad:
PartialCachingControl cacheme=(PartialCachingControl)Page.LoadControl("test.ascx");
Cacheme.CachePolicy.SetExpires(DateTime.Now.AddSeconds(10));
PlaceHolder1.Controls.Add(cacheme);
Lable1.Text=cacheme.CachePolicy.Duration.ToString();
3.使用DataSource缓存
SqlDataSource、ObjectDataSource、XmlDataSource控件都包括了用于缓存DataSource承载的属性,好处是数据源控件可以在数据更新时自动重新载入数据。并且可以在多个页面间共享相同的数据,通过一些属性的组合来识别:SelectCommand、SelectParameters、ConnectionString。如果属性相同,即共享相同的缓存数据。
通过设置属性设置缓存过期策略
包括绝对缓存(EnableCaching="True" CacheDuration=“xxx”)和Sliding缓存(EnableCaching="True" CacheExpirationPolicy="Sliding" CacheDuration=“xxx”)
使用ObjectDataSource控件缓存
通过设置控件的EnableCaching、CacheExpirationPolicy、CacheDuration属性以及SelectMethod所制定的方法名来完成。
使用XmlDataSource控件缓存
设置DataFile属性创建一个文件依赖。