為每個session頁配制緩存是通過 @ OutputCache 指令的屬性 VaryByCustom 來實(shí)現(xiàn)的。按照下面的腳本(包含到一個.aspx文件中),花上10秒鐘就可以為各個session ID用戶配制獨(dú)立的頁面版本。
<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="SessionID" %>
要用到 VaryByCustom="SessionID" ,就要在在服務(wù)器的根目錄下有Global.asax文件,在文件中聲明以下用法:
<script language="C#" runat="server">
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg.ToLower () == "sessionid") {
HttpCookie cookie =
context.Request.Cookies["ASP.NET_SessionId"];
if (cookie != null)
return cookie.Value;
}
return base.GetVaryByCustomString (context, arg);
}
</script>
GetVaryByCustomString 是ASP.NET頁面輸出緩存的基礎(chǔ)。它繼承于HttpApplication,返回從session cookie得到的session ID。用戶在調(diào)用GetVaryByCustomString時會被關(guān)聯(lián)到一個session。
這個技術(shù)的缺點(diǎn)是不能用于不支持cookie的用戶。另外,用戶只有在第二次發(fā)出申請時才能獲得緩存,因?yàn)榈谝淮握埱鬀]有合法的session cookie。