1. 如果页面的缓存设置为100秒 而用户控件里面设置的是50秒 则包括用户控件在内整个页面的缓存为100秒,
与用户控件的缓存设置无关.
2.如果页面的缓存设置为50秒,而用户控件里面的设置为100秒 则页面其余部分刷新两次,用户控件才刷新一次.
3.用户设置的缓存时候要动态加载,下面是对用户控件包装 包装后才获取有效的ControlCachePolicy实例并且如果要设置用户控件的缓存机制 设置ControlCachePolicy实例只有在 Init和PreRender阶段之间才能成功操作.
下面是包装:
[PartialCache(20)] //缓存过期为20秒,等效于<%@ OutPutCache Duration="20" %>
//注意这个时PartialCachingControl类的方法
//用户控件
Public Partial Class NewUesrControl : UserControl
{}
在动态加载时 用到了PartialCachingControl类,则ASP.NET会生成PartialCachingControl的实例来包装用户控件,此时来生成PartialCachingControl类实例还有一个必要的条件,即必须通过TemplaleControl.LoadControl方法来动态加载用户控件.
与用户控件的缓存设置无关.
2.如果页面的缓存设置为50秒,而用户控件里面的设置为100秒 则页面其余部分刷新两次,用户控件才刷新一次.
3.用户设置的缓存时候要动态加载,下面是对用户控件包装 包装后才获取有效的ControlCachePolicy实例并且如果要设置用户控件的缓存机制 设置ControlCachePolicy实例只有在 Init和PreRender阶段之间才能成功操作.
下面是包装:
[PartialCache(20)] //缓存过期为20秒,等效于<%@ OutPutCache Duration="20" %>
//注意这个时PartialCachingControl类的方法
//用户控件
Public Partial Class NewUesrControl : UserControl
{}
在动态加载时 用到了PartialCachingControl类,则ASP.NET会生成PartialCachingControl的实例来包装用户控件,此时来生成PartialCachingControl类实例还有一个必要的条件,即必须通过TemplaleControl.LoadControl方法来动态加载用户控件.
1<script language="C#" runat="server">
2 void Page_Init(object sender, EventArgs e)
3 {
4 //动态加载用户控件,并返回PartialCachingControl实例
5 PartialCachingControl ppc = LoadControl("ControlForControlCachePolicy.ascx") as PartialCachingControl;
6 //通过CachePolicy属性获取ControlCachePolicy实例
7 ControlCachePolicy cacheSettings = ppc.CachePolicy;
8 //如果用户控件的过期时间大于20秒就
9 if (cacheSettings.Duration > TimeSpan.FromSeconds(20))
10 {
11 //设置用户控件过期时间和缓存过期测略
12 cacheSettings.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(10)));
13 cacheSettings.SetSlidingExpiration(false);
14 }
15 Controls.Add(ppc);
16 }
17 new void Page_Load(object sender, EventArgs e)
18 {
19 Label1.Text = "本页面的控件显示的时间为:(本页面缓存设置为5秒):<font color='blue'>"
20 + DateTime.Now.ToString()+"</font>";
21 }
22</script>
2 void Page_Init(object sender, EventArgs e)
3 {
4 //动态加载用户控件,并返回PartialCachingControl实例
5 PartialCachingControl ppc = LoadControl("ControlForControlCachePolicy.ascx") as PartialCachingControl;
6 //通过CachePolicy属性获取ControlCachePolicy实例
7 ControlCachePolicy cacheSettings = ppc.CachePolicy;
8 //如果用户控件的过期时间大于20秒就
9 if (cacheSettings.Duration > TimeSpan.FromSeconds(20))
10 {
11 //设置用户控件过期时间和缓存过期测略
12 cacheSettings.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(10)));
13 cacheSettings.SetSlidingExpiration(false);
14 }
15 Controls.Add(ppc);
16 }
17 new void Page_Load(object sender, EventArgs e)
18 {
19 Label1.Text = "本页面的控件显示的时间为:(本页面缓存设置为5秒):<font color='blue'>"
20 + DateTime.Now.ToString()+"</font>";
21 }
22</script>