天天看点

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,如需转载请自行联系原作者