CacheDependency用法
系列目錄:
SqlDependency緩存用法
Asp.net使用SqlDependency
SqlCacheDependency使用命令通知使緩存無效
CacheDependency用法
AggregateCacheDependency 用法
SqlCacheDependency使用輪流檢測技術(shù)(輪詢)使緩存無效
-------------------------------------------------------------------------------------------
??????按Msdn解釋,CacheDependency在存儲于 ASP.NET 應(yīng)用程序的 Cache 對象中的項(xiàng)與文件、緩存鍵、文件或緩存鍵的數(shù)組或另一個(gè) CacheDependency 對象之間建立依附性關(guān)系。CacheDependency 類監(jiān)視依附性關(guān)系,以便在任何這些對象更改時(shí),該緩存項(xiàng)都會自動移除。
??? CacheDependency有幾中重載,各作用如下。
????//假設(shè)緩存的來源文件是當(dāng)前目錄下的data.xml文件
????//緩存依賴的文件路徑
CacheDependency?mydep?=newCacheDependency("data.xml");????//緩存依賴的文件可以有多個(gè)
CacheDependency?mydep1=newCacheDependency(newstring[]{"data.xml","data1.xml"});????//檢查緩存依賴更改的依據(jù)時(shí)間
CacheDependency?mydep2?=newCacheDependency("data.xml",?DateTime.Now);????//檢查多個(gè)依賴文件更改的依據(jù)時(shí)間
CacheDependency?mydep3?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},?DateTime.Now);????//檢查依賴多個(gè)文件,也依賴多個(gè)緩存鍵值
CacheDependency?mydep4?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"});????//關(guān)聯(lián)依賴,還可以依賴于另一個(gè)文件緩存依賴
CacheDependency?mydep5?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?mydep);????//文件和鍵值上次修改的依據(jù)時(shí)間
CacheDependency?mydep6?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?DateTime.Now);????//文件、另一個(gè)緩存依賴和鍵值上次修改的依據(jù)時(shí)間
CacheDependency?mydep6?=newCacheDependency(newstring[]?{?"data.xml",?"data1.xml"},newstring[]?{?"Category",?"Category1"},?mydep,DateTime.Now);例子
??? 用CacheDependency監(jiān)控一個(gè)XML文件。當(dāng)XML文件變更時(shí)清除緩存,然后重新取得數(shù)據(jù)。方法如下。
??? 新建一個(gè)Asp.Net應(yīng)用程序。在App_Data中建立一個(gè)XML文件,名為XmlData.XML。內(nèi)容如下:
<?xml?version="1.0"?encoding="utf-8"??><book><item><bookName>C#開發(fā)</bookName><author>陳寬田</author></item><item><bookName>Ado.net開發(fā)</bookName><author>陳成城</author></item></book>????新建一個(gè)aspx文件,名子為CacheDependencyPage.aspx。在頁面放一個(gè)GridView,命名為gvData用于顯示XML數(shù)據(jù)。編寫后臺代碼,如下:
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();
????????}
????}
}
?????測試,運(yùn)行程序,頁面上會顯示XML中的數(shù)據(jù),后臺會緩存當(dāng)前取出的數(shù)據(jù)。刷新頁面時(shí)會中緩存中取數(shù)據(jù)。然后修改XML文件中的內(nèi)容,再次刷新,緩存會被刪除,然后重新取得XML中的內(nèi)容。
總結(jié)
以上是生活随笔為你收集整理的CacheDependency用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 缓存的设计
- 下一篇: 强大的SqlCacheDependenc