天天看點

CacheDependency用法

系列目錄:

<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。内容如下:

CacheDependency用法
CacheDependency用法

&lt;?xml version="1.0" encoding="utf-8" ?&gt;

&lt;book&gt;

  &lt;item&gt;

    &lt;bookName&gt;C#開發&lt;/bookName&gt;

    &lt;author&gt;陳寬田&lt;/author&gt;

  &lt;/item&gt;

    &lt;bookName&gt;Ado.net開發&lt;/bookName&gt;

    &lt;author&gt;陳成城&lt;/author&gt;

&lt;/book&gt;

CacheDependency用法
CacheDependency用法

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

CacheDependency用法
CacheDependency用法

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();

    }

}

CacheDependency用法
CacheDependency用法

     測試,運作程式,頁面上會顯示XML中的資料,背景會緩存目前取出的資料。重新整理頁面時會中緩存中取資料。然後修改XML檔案中的内容,再次重新整理,緩存會被删除,然後重新取得XML中的内容。

本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/archive/2013/03/12/2955392.html,如需轉載請自行聯系原作者