系列目錄:
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/25/1964923.html">SqlDependency緩存用法</a>
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/25/1965175.html">Asp.net使用SqlDependency</a>
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/26/1965794.html">SqlCacheDependency使用指令通知使緩存無效</a>
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/26/1966049.html">CacheDependency用法</a>
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/27/1966088.html">AggregateCacheDependency 用法</a>
<a href="http://www.cnblogs.com/scottckt/archive/2011/02/27/1966567.html">SqlCacheDependency使用輪流檢測技術(輪詢)使緩存無效</a>
-------------------------------------------------------------------------------------------
按Msdn解釋,CacheDependency在存儲于 ASP.NET 應用程式的 Cache 對象中的項與檔案、緩存鍵、檔案或緩存鍵的數組或另一個 CacheDependency 對象之間建立依附性關系。CacheDependency 類監視依附性關系,以便在任何這些對象更改時,該緩存項都會自動移除。
CacheDependency有幾中重載,各作用如下。
//假設緩存的來源檔案是目前目錄下的data.xml檔案
//緩存依賴的檔案路徑
CacheDependency mydep = new CacheDependency("data.xml");
//緩存依賴的檔案可以有多個
CacheDependency mydep1=new CacheDependency(new string []{"data.xml","data1.xml"});
//檢查緩存依賴更改的依據時間
CacheDependency mydep2 = new CacheDependency("data.xml", DateTime.Now);
//檢查多個依賴檔案更改的依據時間
CacheDependency mydep3 = new CacheDependency(new string[] { "data.xml", "data1.xml" }, DateTime.Now);
//檢查依賴多個檔案,也依賴多個緩存鍵值
CacheDependency mydep4 = new CacheDependency(new string[] { "data.xml", "data1.xml" },
new string[] { "Category", "Category1" });
//關聯依賴,還可以依賴于另一個檔案緩存依賴
CacheDependency mydep5 = new CacheDependency(new string[] { "data.xml", "data1.xml" },
new string[] { "Category", "Category1" }, mydep);
//檔案和鍵值上次修改的依據時間
CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },
new string[] { "Category", "Category1" }, DateTime.Now);
//檔案、另一個緩存依賴和鍵值上次修改的依據時間
new string[] { "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>
<bookName>Ado.net開發</bookName>
<author>陳成城</author>
</book>

建立一個aspx檔案,名子為CacheDependencyPage.aspx。在頁面放一個GridView,命名為gvData用于顯示XML資料。編寫背景代碼,如下:

using System.Data;
using System.Web.Caching;
namespace SqlDependencyInAspNet
{
public partial class CacheDependencyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetData();
}
}
private void GetData()
DataTable tableData = new DataTable();
if (Cache["data"] == null)
DataSet ds = new DataSet();
string filePath = Server.MapPath("~/App_Data/XmlData.xml");
ds.ReadXml(filePath);
tableData = ds.Tables[0];
CacheDependency cdy = new CacheDependency(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中的内容。
本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2013/03/12/2955392.html,如需轉載請自行聯系原作者