獨立小應用程序性能優化,減少數據庫訪問次數,提高應用程序處理效率
低風險創業:
1、HttpRuntime.Cache
- HttpRuntime.Cache 相當於就是一個緩存具體實現類,這個類雖然被放在了 System.Web 命名空間下了。但是非 Web 應用也是可以拿來用的。
- HttpContext.Cache 是對上述緩存類的封裝,由於封裝到了 HttpContext ,局限於只能在知道 HttpContext 下使用,即只能用於 Web 應用。
2、.絕對過期時間和相對過期時間
/// <summary> /// 設置數據緩存,相對過期 /// --鍵值存在時會替換原數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="cacheKey">鍵值</param> /// <param name="objObject"></param> /// <param name="timeout">相對過期時間,最后一次訪問所插入對象時與該對象到期時之間的時間間隔(單位:秒)</param> public static void SetRelativeCache<T>(string cacheKey, T objObject, int timeout = 30)//默認30秒過期,30秒不訪問就會過期 { try { if (objObject == null) return; var objCache = HttpRuntime.Cache; //相對過期時間,最后一次訪問的時間超過了時間間隔后才會到期 objCache.Insert(TypeName<T>() + cacheKey, objObject, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(timeout), CacheItemPriority.High, null); } catch (Exception ex) { throw ex; } }
/// <summary> /// 設置數據緩存,絕對過期時間 /// --鍵值存在時會替換原數據 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="cacheKey"></param> /// <param name="objObject"></param> /// <param name="timeout">絕對過期時間(單位:秒,默認300秒以后就會過期)</param> public static void SetAbsoluteCache<T>(string cacheKey, T objObject, int timeout = 300)//默認300秒 { try { if (objObject == null) return; var objCache = HttpRuntime.Cache; //絕對過期時間, TimeSpan.Zero objCache.Insert(TypeName<T>() + cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), Cache.NoSlidingExpiration, CacheItemPriority.High, null); } catch (Exception ex) { throw ex; } }
注意事項:
absoluteExpiration
類型:System.DateTime
所添加對象將過期並被從緩存中移除的時間。如果使用相對過期,則 absoluteExpiration 參數必須為 NoAbsoluteExpiration。
slidingExpiration
類型:System.TimeSpan
最后一次訪問所添加對象時與該對象過期時之間的時間間隔。如果該值等效於 20 分鍾,則對象在最后一次被訪問 20 分鍾之后將過期並從緩存中移除。如果使用絕對過期,則 slidingExpiration 參數必須為 NoSlidingExpiration。