Cache 的絕對到期與滑動到期
絕對到期:設定絕對過期時間 到了指定時間以後會失效。(類似Cookie機制)
相對到期也稱滑動到期:設定相對過期時間 指定時間内無通路會失效。(類似Session機制)
HttpRuntime.Cache與HttpContext.Current.Cache 為同一個對象
HttpRuntime.Cache.Add 存在相同的鍵會異常,傳回緩存成功的對象 HttpRuntime.Cache.Insert存在相同的鍵會替換無傳回值
HttpRuntime.Cache["key"] 使用字典的方式也可以讀取和設定
HttpRuntime.Cache.Insert(key, value, null, DateTime.Now.AddSeconds(seconds), TimeSpan.Zero); //設定絕對過期時間 到了指定時間以後會失效 ps: TimeSpan.Zero == System.Web.Caching.Cache.NoSlidingExpiration
HttpRuntime.Cache.Insert(key,
value, null, DateTime.MaxValue, TimeSpan.FromSeconds(seconds)); //設定相對過期時間 指定時間内無通路會失效 ps: DateTime.MaxValue == System.Web.Caching.Cache.NoAbsoluteExpiration
對于每個應用程式域均建立該類的一個執行個體,并且隻要對應的應用程式域保持活動,該執行個體便保持有效。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuITN2kTYxIWY4UjM2YjYhNWYlRTOzcTNjNGM4EGOjVWZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
注意:
Cache 類不能在 ASP.NET 應用程式外使用。它是為在 ASP.NET 中用于為 Web 應用程式提供緩存而設計和測試的。在其他類型的應用程式(如控制台應用程式或 Windows 窗體應用程式)中,ASP.NET 緩存可能無法正常工作。
System.Web.Caching是用來管理緩存的命名空間,其父級空間是System.Web,由此可見,緩存通常用于Web網站的開發,包括在B/S項目中的開發。
緩存的設計主要是考慮到網絡帶寬可能會延緩資料的送出與回發,如果把資料儲存在用戶端,使用者就可以直接從用戶端讀取資料,減少用戶端與伺服器端的資料互動,提高程式的性能。
那麼System.Web.Caching可以使用到WinForm程式中嗎?
如果用的是winform,基本上不用想這個問題,因為你的程式本身就在記憶體裡運作着。winfrom 直接用記憶體用 資料字典如果是
web,緩存就是将常用的資料放到伺服器的記憶體中,當有不同的客戶請求相同的資料時,直接從記憶體讀取,以此提高性能。
簡單點:WebForm是“瘦用戶端”,占用伺服器資源。WinForm是“胖客戶單”,占用的是本地用戶端記憶體。
推薦兩種寫法:
一、是web項目中如何使用。
二、是winform程式中
(1)靜态變量緩存:
View Code
namespace HZ
{
using System.Collections.Generic;
/// <summary>
/// 全局統一的緩存類
/// </summary>
public class Cache
{
private SortedDictionary<string, string> dic = new SortedDictionary<string, string>();
private static volatile Cache instance = null;
private static object lockHelper = new object();
private Cache()
{
}
public void Add(string key, string value)
dic.Add(key, value);
public void Remove(string key)
dic.Remove(key);
public string this[string index]
get
{
if (dic.ContainsKey(index))
return dic[index];
else
return null;
}
set { dic[index] = value; }
public static Cache Instance
if (instance == null)
{
lock (lockHelper)
{
if (instance == null)
{
instance = new Cache();
}
}
}
return instance;
}
}
(2)記憶體緩存MemoryCach:表示實作記憶體中的緩存的類型。(注意此類僅僅NET4.0以上支援)