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參數的列表。