1 /// <summary> 2 /// 緩存操作類 3 /// </summary> 4 public class Cache 5 { 6 private static List<string> _allUseCacheKey = new List<string>(); 7 private static ObjectCache _cache = MemoryCache.Default; 8 9 /// <summary> 10 /// 添加緩存 11 /// </summary> 12 /// <param name="key">Key 唯一</param> 13 /// <param name="value">值</param> 14 /// <param name="cacheOffset">超時時間</param> 15 public static void Add(string key, object value, DateTimeOffset cacheOffset) 16 { 17 if (_allUseCacheKey.Contains(key)) 18 { 19 Remove(key); 20 } 21 _allUseCacheKey.Add(key); 22 _cache.Add(key, value, cacheOffset); 23 } 24 25 /// <summary> 26 /// 移除緩存 27 /// </summary> 28 /// <param name="key">Key</param> 29 public static void Remove(string key) 30 { 31 if (_allUseCacheKey.Contains(key)) 32 { 33 _allUseCacheKey.Remove(key); 34 } 35 _cache.Remove(key); 36 } 37 38 /// <summary> 39 /// 讀取緩存 40 /// </summary> 41 /// <param name="key">Key</param> 42 /// <returns></returns> 43 public static object Read(string key) 44 { 45 if (_allUseCacheKey.Contains(key)) 46 return _cache[key]; 47 return null; 48 } 49 50 /// <summary> 51 /// 清除所有緩存 52 /// </summary> 53 public static void Clear() 54 { 55 foreach (string value in _allUseCacheKey) 56 { 57 _cache.Remove(value); 58 } 59 _allUseCacheKey.Clear(); 60 } 61 }
public class SysuserStorageService { private int _adminId; public SysuserStorageService(int adminId) { _adminId = adminId; } /// <summary> /// 緩存一些內容 /// </summary> public void Storage() { tbl_admin user = new tbl_admin();//根據實際需求獲取對象 Cache.Add(_adminId + "-Admin-" + SystemSetting.Wms, user, SystemSetting.OffSetTime); Cache.Add(_adminId + "-LastLoginTime-" + SystemSetting.Wms, DateTime.Now, SystemSetting.OffSetTime); } public tbl_admin GetAdmin { get { return (tbl_admin)Cache.Read(_adminId + "-Admin-" + SystemSetting.Wms); } } public string GetLastLoginTime { get { return ((DateTime)Cache.Read(_adminId + "-LastLoginTime-" + SystemSetting.Wms)).ToString("yyyy-MM-dd HH:mm:ss"); } } }
public class SystemSetting { /// <summary> /// 緩存定義 /// </summary> public const string ShopWms = "Wms"; /// <summary> /// 緩存超時時間 /// </summary> public static DateTimeOffset OffSetTime = DateTimeOffset.Now.AddHours(24); /// <summary> /// 登錄Session /// </summary> public const string LoginSession = ""; }
SysuserStorageService storage = new SysuserStorageService(AdminId);//根據ID調用
tbl_admin User = storage.GetAdmin;
//頁面緩存
[OutputCache(Duration = 300, VaryByParam = "productno;brand;years")]
上述代碼使用@OutputCatch指令聲明了頁面緩存,該頁面將被緩存300秒。@OutputCatch指令包括10個屬性,通過這些屬性能夠分別為頁面的不同情況進行緩存設置,常用的屬性如下所示:
CacheProfile:獲取或設置OutputCacheProfile名稱。
Duration:獲取或設置緩存項需要保留在緩存中的時間。
VaryByHeader:獲取或設置用於改變緩存項的一組都好分隔的HTTP標頭名稱。
Location:獲取或設置一個值,該值確定緩存項的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默認值為Any。
VaryByControl:獲取或設置一簇分好分隔的控件標識符,這些標識符包含在當前頁或用戶控件內,用於改變當前的緩存項。
NoStore:獲取或設置一個值,該值確定是否設置了“Http Cache-Control:no-store”指令。
VaryByCustom:獲取輸出緩存用來改變緩存項的自定義字符串列表。
Enabled:獲取或設置一個值,該值指示是否對當前內容啟用了輸出緩存。
VaryByParam:獲取查詢字符串或窗體POST參數的列表。