整页缓存和部分页缓存:
整页缓存允许将页的全部内容保存在内存中,并用于完成客户端请求
部分页缓存允许缓存页的部分内容,其他部分则为动态内容
部分页缓存可采用两种工作方式:控件缓存和缓存后替换。
控件缓存有时也称为分段缓存,这种方式允许将信息包含在一个用户控件内,然后将该用户控件标记为可缓存的,以此来缓存页输出的部分内容。这一方式可缓存页中的特定内容,并不缓存整个页,因此每次都需重新创建整个页。
缓存后替换与控件缓存正好相反。这种方式缓存整个页,但页中的各段都是动态的。
而服务器空件Substitution就实现了页面的缓存后替换。
Ps:需要对整个页面进行缓存时可以在页面顶首加入如下语句
<%@ OutputCache Duration="6" VaryByParam="none" %>其中6表示缓存有效时间为6秒
Substitution服务器控件介绍:
指定输出缓存网页上要以动态内容替换该控件的部分。Substitution控件为要缓存大部分
内容的网页提供了一种缓存局部页的简化解决方案。
Substitution执行时会调用一个返回字符串的方法,该方法返回的字符串即为要在也中的Substitution控件的位置上显示的内容。
使用MethodName属性指定要在Substitution控件执行时调用的回调方法的名称。指定的方法必须是静态方法,且参数是HttpContext
例子:
//页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ OutputCache Duration="60" VaryByParam="none" %>//注意使整个页面都进行缓存,且有效期是60秒
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
被缓存的时间:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
不会被缓存的时间:<asp:Substitution ID="Substitution1" runat="server" MethodName="GetTime" />
</div>
</form>
</body>
</html>
//对应的设计图

Substitution服务器控件的属性设置为:

//后台代码
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
private static string GetTime(HttpContext context)//与Substitution服务器控件绑定的函数
{
return DateTime.Now.ToString();
}
}
//测试结果
//第一次加载

//刷新下(被缓存的时间还是使用缓存的时间,不会被缓存的时间则没有使用缓存的时间,而是立刻更新)

浙公网安备 33010602011771号