有时我们需要的功能不是缓存全部的页面,而是缓存页面上的某一个部分,其余部分是动态的,这时,就需要用到页面局部缓存,该缓存包括两个部分:控件缓存和替换后缓存。
可缓存的用户控件
1
2
3
4
控件缓存 - 前台代码
2 <%@ Register Src="UserControls/ControlCache1.ascx" TagName="ControlCache1" TagPrefix="uc1" %>
3
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6 <html xmlns="http://www.w3.org/1999/xhtml" >
7 <head runat="server">
8 <title>测试页面局部缓存 - 控件缓存</title>
9 </head>
10 <body>
11 <form id="form1" runat="server">
12 控件时间:<uc1:ControlCache1 ID="ControlCache1_1" runat="server" />
13 <p></p>
14 页面时间:<asp:Literal ID="lblPageContent" runat="server" />
15 </form>
16 </body>
17 </html>
替换后缓存 - 前台代码
2 <%@ OutputCache Duration="60" VaryByParam="none" %>
3
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6 <html xmlns="http://www.w3.org/1999/xhtml" >
7 <head runat="server">
8 <title>测试页面局部缓存 - 替换后缓存</title>
9 </head>
10 <body>
11 <form id="form1" runat="server">
12 页面缓存时间:<asp:Literal ID="lblPageContent" runat="server" />
13 <p></p>
14 替换后的时间:<asp:Substitution ID="Substitution1" runat="server"
15 MethodName="GetDateTime" />
16 </form>
17 </body>
18 </html>
替换后缓存 - 后台代码
2 {
3 if (!IsPostBack)
4 {
5 lblPageContent.Text = DateTime.Now.ToString();
6 }
7 }
8
9 /// <summary>
10 /// 获取系统当前时间
11 /// 必须是静态方法
12 /// </summary>
13 /// <param name="context">必须接受此类型的参数</param>
14 /// <returns>必须返回字符串</returns>
15 protected static string GetDateTime(HttpContext context)
16 {
17 return DateTime.Now.ToString();
18 }