C# ObjectCache、OutputCache缓存
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参数的列表。