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>
<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>

浙公网安备 33010602011771号