介绍
有时缓存整个页面是不现实的,因为页面的某些部分可能在每次请求时都需要变化
在这种情况下,只能缓存页面的一部分。顾名思义,页面部分缓存是将页面部分内容保存在内存中,
以便更快速响应用户请求,而页面其他部分内容则为动态内容。
采用页面部分缓存的技术下,经常采用先将那个页面缓存,然后替换页面中不需要缓存的部分的“缓存
后替换”的方法
“缓存后替换”主要采用Substitution控件来实现
使用Substitution控件实现页面部分缓存
数据库中的默写数据可能每时每刻都会发生变化,因此对页面的动态内容也实现缓存,则可能产生数
使用Substitution控件实现页面部分缓存
数据库中的默写数据可能每时每刻都会发生变化,因此对页面的动态内容也实现缓存,则可能产生数
据不能及时更新的问题
Substitution控件在整页缓存的前提下,指定页面中免于缓存的部分,那么页面中被缓存的区域只执行
一次,然后从缓存读取,直至该缓存到期
页面中的动态区域,即Substitution控件指定的部分,在每次请求页面时都会执行
Substitution控件 有一个重要的属性:MethodName属性所定义的方法。
用于获取或设置当Substiution控件执行时调用的方法的名称,必须符合以下3条标准
1.必须被定义为静态方法
2.必须接受HttpContext类型的参数
3.必须返回string类型的值
在运行情况下,Substitution控件将会自动调用MethodName属性所定义的方法。
该方法返回的字符串即为要在页面的内容
代码实例
<%@ OutputCache Duration="5" VaryByParam="none" %>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Substitution ID="Substitution1" runat="server" MethodName="GetTime" />
<asp:Button ID="Button1" runat="server" Text="刷新" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString("yyyy--MM--dd--hh--mm--ss");
}
public static String GetTime(HttpContext context)
{
return DateTime.Now.ToString();
}