我們在頁面上新增三個按鈕並雙擊按鈕建立事件處理方法,三個按鈕使用不同的過期策略來新增ASP.NET快取。
<asp:Button ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不過期快取"
OnClick="btn_InsertNoExpirationCache_Click" />
<asp:Button ID="btn_InsertAbsoluteExpirationCache" runat="server" Text="插入絕對時間
過期快取" OnClick="btn_InsertAbsoluteExpirationCache_Click" />
<asp:Button ID="btn_InsertSlidingExpirationCache" runat="server" Text="插入變化時間
過期快取" OnClick="btn_InsertSlidingExpirationCache_Click" />
三個按鈕的Click事件處理方法如下:
protected void btn_InsertNoExpirationCache_Click(object sender, EventArgs e)
{
DataSet ds = GetData();
Cache.Insert("Data", ds);
}
protected void btn_InsertAbsoluteExpirationCache_Click(object sender, EventArgs e)
{
DataSet ds = GetData();
Cache.Insert("Data", ds,null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
}
protected void btn_InsertSlidingExpirationCache_Click(object sender, EventArgs e)
{
DataSet ds = GetData();
Cache.Insert("Data", ds, null, DateTime.MaxValue, TimeSpan.FromSeconds(10));
}
讓我們來分析一下這三種ASP.NET快取過期策略。
◆永不過期。直接賦值快取的Key和Value即可
◆絕對時間過期。 DateTime.Now.AddSeconds(10)表示快取在10秒後過期,TimeSpan.Zero表示不使用平滑過期策略。
◆變化時間過期(平滑過期)。 DateTime.MaxValue表示不使用絕對時間過期策略,TimeSpan.FromSeconds(10)表示快取連續10秒沒有存取就過期。
在這裡,我們都使用了Insert()方法來新增快取。其實,Cache還有一個Add()方法也能在快取中新增項目。不同之處在於Add()方法只能新增快取中沒有的項,如果新增快取中已有的項會失敗(但不會拋出例外),而Insert()方法能覆寫原來的項。
注意:和Application不同,這裡不需要使用在插入ASP.NET快取的時候進行鎖定操作,Cache會自己處理並發。