這種策略讓緩存依賴於一個指定的文件,經過改變文件的更新日期來清除緩存。緩存
///<summary>服務器 ///獲取當前應用程序指定CacheKey的Cache對象值負載均衡 ///</summary>spa ///<param name="CacheKey">索引鍵值</param>對象 ///<returns>返回緩存對象</returns>索引 public staticobject GetCache(string CacheKey)ci {同步 System.Web.Caching.Cache objCache =HttpRuntime.Cache;string return objCache[CacheKey];it } ///<summary> ///設置以緩存依賴的方式緩存數據 ///</summary> ///<param name="CacheKey">索引鍵值</param> ///<param name="objObject">緩存對象</param> ///<param name="cacheDepen">依賴對象</param> public staticvoid SetCache(string CacheKey,object objObject, System.Web.Caching.CacheDependency dep) { System.Web.Caching.Cache objCache =HttpRuntime.Cache; objCache.Insert( CacheKey, objObject, dep, System.Web.Caching.Cache.NoAbsoluteExpiration,//從不過時 System.Web.Caching.Cache.NoSlidingExpiration,//禁用可調過時 System.Web.Caching.CacheItemPriority.Default, null); } protected void Page_Load(object sender, EventArgs e) { string CacheKey = "cachetest"; object objModel = GetCache(CacheKey);//從緩存中獲取 if (objModel == null) //緩存裏沒有 { objModel = DateTime.Now;//把當前時間進行緩存 if (objModel != null) { //依賴C:\\test.txt 文件的變化來更新緩存 System.Web.Caching.CacheDependency dep =new System.Web.Caching.CacheDependency("C:\\test.txt"); SetCache(CacheKey, objModel, dep);//寫入緩存 } }
Label1.Text = objModel.ToString(); } |
當咱們改變test.txt的內容時,緩存會自動更新。這種方式很是適合讀取配置文件的緩存處理。若是配置文件不變化,就一直讀取緩存的信息,一旦配置發生變化,自動更新同步緩存的數據。
這種方式的缺點是,若是緩存的數據比較多,相關的依賴文件比較鬆散,對管理這些依賴文件有必定的麻煩。對於負載均衡環境下,還須要同時更新多臺Web服務器下的緩存文件,若是多個Web應用中的緩存依賴於同一個共享的文件,可能會省掉這個麻煩。