玩玩asp.net 2.0的caching系列一 - OutputCache與Substitution
作網站的首頁的時候,通常為了增加效能,都會作一些cache的動作,
而在asp.net中,要作將網頁作cache很簡單,
如果要cache整個頁面,只要在aspx中加上下面這段
<%@ OutputCache Duration="60" VaryByParam="None" %>
這樣可以讓你的頁面cache 60秒.
如果你的網址如下
ShowCity.aspx?city=101
也就是會因為參數不同而有不同結果,而你也希望能快取這些頁面,
那就將設定改為
<%@ OutputCache Duration="60" VaryByParam="city" %>
如果有多個參數的話,那就以分號(;)區隔就可以了,例如
<%@ OutputCache Duration="60" VaryByParam="city;zipcode" %>
可是現在問題來了.
如果首頁都是公開的資料那也就沒有甚麼問題,
但是現在首頁要放個登入者的名稱,
讓使用者知道自己已經登入,而且知道自己叫甚麼名字.
而整頁作outputcache的話,一連到網頁可能會看到別人的名字...
一開始,是用ajax的方式,在頁面呈現以後,
透過javascript去呼叫一隻aspx取得登入資料,然後顯示在某個div裡面.
但後來發現asp.net 2.0中有個Substitution的控制項可以解決這樣的問題,
而Substitution 的用法如下:
aspx
<asp:Substitution ID="Substitution1" runat="server" MethodName="GetDateTime" />
aspx.cs
public static string GetDateTime(HttpContext context)
{
return "主機時間 : " + DateTime.Now.ToString();
}
範例網址 : http://vip.blueshop.com.tw/ajun/cachetest.aspx
點選上面的範例網址,然後重新整理幾次,
你會發現上面的主機時間60秒才會更新.
但下面的主機時間是每次都會更新.
參考網址:
http://dotnetjunkies.com/QuickStartv20/aspnet/doc/ctrlref/standard/substitution.aspx