ASP.NET緩存中Cache過(guò)期的三種策略
我們?cè)陧?yè)面上添加三個(gè)按鈕并雙擊按鈕創(chuàng)建事件處理方法,三個(gè)按鈕使用不同的過(guò)期策略添加ASP.NET緩存。
- <asp:Button ID="btn_InsertNoExpirationCache" runat="server" Text="插入永不過(guò)期緩存"
- OnClick="btn_InsertNoExpirationCache_Click" />
- <asp:Button ID="btn_InsertAbsoluteExpirationCache" runat="server" Text="插入絕對(duì)時(shí)間
- 過(guò)期緩存" OnClick="btn_InsertAbsoluteExpirationCache_Click" />
- <asp:Button ID="btn_InsertSlidingExpirationCache" runat="server" Text="插入變化時(shí)間
- 過(guò)期緩存" OnClick="btn_InsertSlidingExpirationCache_Click" />
三個(gè)按鈕的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));
- }
我們來(lái)分析一下這三種ASP.NET緩存過(guò)期策略。
◆永不過(guò)期。直接賦值緩存的Key和Value即可
◆絕對(duì)時(shí)間過(guò)期。DateTime.Now.AddSeconds(10)表示緩存在10秒后過(guò)期,TimeSpan.Zero表示不使用平滑過(guò)期策略。
◆變化時(shí)間過(guò)期(平滑過(guò)期)。DateTime.MaxValue表示不使用絕對(duì)時(shí)間過(guò)期策略,TimeSpan.FromSeconds(10)表示緩存連續(xù)10秒沒(méi)有訪問(wèn)就過(guò)期。
在這里,我們都使用了Insert()方法來(lái)添加緩存。其實(shí),Cache還有一個(gè)Add()方法也能向緩存中添加項(xiàng)。不同之處在于Add()方法只能添加緩存中沒(méi)有的項(xiàng),如果添加緩存中已有的項(xiàng)將失敗(但不會(huì)拋出異常),而Insert()方法能覆蓋原來(lái)的項(xiàng)。
注意:和Application不同,這里不需要使用在插入ASP.NET緩存的時(shí)候進(jìn)行鎖操作,Cache會(huì)自己處理并發(fā)。
【編輯推薦】