HttpRuntime.Cache .Net独自のキャッシュクラス

19563 ワード

.Netが持っているキャッシュは2つあり、1つはAspです.NetのキャッシュHttpContext.Cache、一つは.Netアプリケーションレベルのキャッシュ、HttpRuntime.Cache.
MSDNには、
HttpContext.Current.Cache:現在のHTTPリクエストのCacheオブジェクトを取得します.HttpRuntime.Cache:現在のアプリケーションのCacheを取得します. 
ソースコードで確認すると、HttpContext.Current.Cacheが呼び出したのもHttpRuntimeだった.CacheでHttpContextはWebでしか呼び出せませんが、HttpRuntimeCacheは任意のアプリケーションセットで使用できるので、ここではキャッシュクラスとしてHttpRuntimeCacheを直接カプセル化して使用します.
コードは次のとおりです. 1 using System; 2 using System.Collections; 3 using System.Web; 4 using System.Web.Caching; 5 /** 6 * author:qixiao 7 * create2017-6-6 11:54:07 8 * */ 9 namespace QX_Frame.Helper_DG 10 { 11 public class HttpRuntimeCache_Helper_DG 12 { 13 /// 14 /// Cache_Get 15 /// 16 /// cacheKey 17 /// 18 public static object Cache_Get(string cacheKey) 19 { 20 return HttpRuntime.Cache[cacheKey]; 21 } 22 23 #region Cache Add 24 25 /// 26 /// Cache_Add 27 /// 28 /// key 29 /// object value 30 /// 31 /// , 。 , NULL。 32 /// , 。 33 /// 34 public static Boolean Cache_Add(string cacheKey, object cacheValue, int keepMinutes = 10, CacheDependency dependencies = null, CacheItemRemovedCallback cacheItemRemovedCallback = null) 35 { 36 HttpRuntime.Cache.Insert(cacheKey, cacheValue, dependencies, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(keepMinutes), CacheItemPriority.NotRemovable, cacheItemRemovedCallback); 37 return true; 38 } 39 40 /// 41 /// Cache_Add 42 /// 43 /// key 44 /// object value 45 /// 46 /// , 。 , NULL。 47 /// , 。 48 /// 49 public static Boolean Cache_Add(string cacheKey, object cacheValue, DateTime expireTime, CacheDependency dependencies = null, CacheItemRemovedCallback cacheItemRemovedCallback = null) 50 { 51 HttpRuntime.Cache.Insert(cacheKey, cacheValue, dependencies, expireTime, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, cacheItemRemovedCallback); 52 return true; 53 } 54 55 /// 56 /// Cache_Add 57 /// 58 /// key 59 /// object value 60 /// , 。 , NULL。 61 /// slidingExpiration, DateTime.MaxValue。 , ,.NET 2.0 , , 。 62 /// absoluteExpiration, TimeSpan.Zero。 , , absoluteExpiration 。 63 /// , “CacheItemPriority”, 。 。 64 /// , 。 65 //public static Boolean Cache_Add(string cacheKey, object cacheValue, CacheDependency dependencies = null, DateTime absoluteExpiration = default(DateTime), TimeSpan slidingExpiration = default(TimeSpan), CacheItemPriority cacheItemPriority = CacheItemPriority.NotRemovable, CacheItemRemovedCallback cacheItemRemovedCallback = null) 66 //{ 67 // DateTime absoluteExpirationTime = default(DateTime); 68 // if (!DateTime.TryParse(absoluteExpiration.ToString(), out absoluteExpirationTime) || absoluteExpiration.Equals(default(DateTime))) 69 // absoluteExpirationTime = DateTime.MaxValue; 70 // else 71 // slidingExpiration = TimeSpan.Zero; 72 73 // TimeSpan slidingExpirationTime = default(TimeSpan); 74 // if (!TimeSpan.TryParse(slidingExpiration.ToString(), out slidingExpirationTime) || slidingExpiration.Equals(default(TimeSpan))) 75 // slidingExpirationTime = TimeSpan.Zero; 76 77 // HttpRuntime.Cache.Insert(cacheKey, cacheValue, dependencies, absoluteExpirationTime, slidingExpirationTime, cacheItemPriority, cacheItemRemovedCallback); 78 // return true; 79 //} 80 81 #endregion 82 83 /// 84 /// Cache_Delete 85 /// 86 /// cacheKey 87 public static Boolean Cache_Delete(string cacheKey) 88 { 89 HttpRuntime.Cache.Remove(cacheKey); 90 return true; 91 } 92 93 /// 94 /// Cache_DeleteAll 95 /// 96 public static Boolean Cache_DeleteAll() 97 { 98 Cache _cache = HttpRuntime.Cache; 99 IDictionaryEnumerator CacheEnum = _cache.GetEnumerator(); 100 while (CacheEnum.MoveNext()) 101 { 102 _cache.Remove(CacheEnum.Key.ToString()); 103 } 104 return true; 105 } 106 107 /// 108 /// Cache Count 109 /// 110 public static int CacheCount 111 { 112 get { return HttpRuntime.Cache.Count; } 113 } 114 } 115 }