CacheDependency用法
系列目錄:
SqlDependency緩存用法
Asp.net使用SqlDependency
SqlCacheDependency使用命令通知使緩存無效
CacheDependency用法
AggregateCacheDependency 用法
SqlCacheDependency使用輪流檢測技術(輪詢)使緩存無效
-------------------------------------------------------------------------------------------
??????按Msdn解釋,CacheDependency在存儲于 ASP.NET 應用程序的 Cache 對象中的項與文件、緩存鍵、文件或緩存鍵的數組或另一個 CacheDependency 對象之間建立依附性關系。CacheDependency 類監視依附性關系,以便在任何這些對象更改時,該緩存項都會自動移除。
??? CacheDependency有幾中重載,各作用如下。
????//假設緩存的來源文件是當前目錄下的data.xml文件
????//緩存依賴的文件路徑
CacheDependency?mydep?=newCacheDependency("data.xml");????//緩存依賴的文件可以有多個
CacheDependency?mydep1=newCacheDependency(newstring[]{"data.xml","data1.xml"});????//檢查緩存依賴更改的依據時間
CacheDependency?mydep2?=newCacheDependency("data.xml",?DateTime.Now);????//檢查多個依賴文件更改的依據時間
CacheDependency?mydep3?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},?DateTime.Now);????//檢查依賴多個文件,也依賴多個緩存鍵值
CacheDependency?mydep4?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"});????//關聯依賴,還可以依賴于另一個文件緩存依賴
CacheDependency?mydep5?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?mydep);????//文件和鍵值上次修改的依據時間
CacheDependency?mydep6?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?DateTime.Now);????//文件、另一個緩存依賴和鍵值上次修改的依據時間
CacheDependency?mydep6?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?mydep,DateTime.Now);例子
??? 用CacheDependency監控一個XML文件。當XML文件變更時清除緩存,然后重新取得數據。方法如下。
??? 新建一個Asp.Net應用程序。在App_Data中建立一個XML文件,名為XmlData.XML。內容如下:
<?xml?version="1.0"?encoding="utf-8"??><book><item><bookName>C#開發</bookName><author>陳寬田</author></item><item><bookName>Ado.net開發</bookName><author>陳成城</author></item></book>????新建一個aspx文件,名子為CacheDependencyPage.aspx。在頁面放一個GridView,命名為gvData用于顯示XML數據。編寫后臺代碼,如下:
usingSystem.Data;usingSystem.Web.Caching;namespaceSqlDependencyInAspNet{publicpartialclassCacheDependencyPage?:?System.Web.UI.Page
????{protectedvoidPage_Load(objectsender,?EventArgs?e)
????????{if(!IsPostBack)
????????????{
????????????????GetData();
????????????}
????????}privatevoidGetData()
????????{
????????????DataTable?tableData?=newDataTable();if(Cache["data"]?==null)
????????????{
????????????????DataSet?ds?=newDataSet();stringfilePath?=Server.MapPath("~/App_Data/XmlData.xml");
????????????????ds.ReadXml(filePath);
????????????????tableData?=ds.Tables[0];
????????????????CacheDependency?cdy?=newCacheDependency(filePath);Cache.Insert("data",?tableData,?cdy);????????????????if(cdy.HasChanged)
????????????????{
????????????????????System.Diagnostics.Debug.WriteLine("Xml已變更");
????????????????}
????????????}else
????????????{
????????????????tableData?=(DataTable)Cache["data"];
????????????}
????????????gvData.DataSource?=tableData;
????????????gvData.DataBind();
????????}
????}
}
?????測試,運行程序,頁面上會顯示XML中的數據,后臺會緩存當前取出的數據。刷新頁面時會中緩存中取數據。然后修改XML文件中的內容,再次刷新,緩存會被刪除,然后重新取得XML中的內容。
總結
以上是生活随笔為你收集整理的CacheDependency用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 缓存的设计
- 下一篇: 叮当应急上征信吗