szujason
在程序的世界里,我们都是王!

整页缓存和部分页缓存:

整页缓存允许将页的全部内容保存在内存中,并用于完成客户端请求

部分页缓存允许缓存页的部分内容,其他部分则为动态内容

部分页缓存可采用两种工作方式:控件缓存缓存后替换

控件缓存有时也称为分段缓存,这种方式允许将信息包含在一个用户控件内,然后将该用户控件标记为可缓存的,以此来缓存页输出的部分内容。这一方式可缓存页中的特定内容,并不缓存整个页,因此每次都需重新创建整个页。

缓存后替换与控件缓存正好相反。这种方式缓存整个页,但页中的各段都是动态的。

      而服务器空件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();

    }

}

 

//测试结果

//第一次加载


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


posted on 2009-05-22 23:03  szuJason  阅读(187)  评论(0)    收藏  举报