CacheDependency用法

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

    //文件、另一个缓存依赖和键值上次修改的依据时间

    CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },
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>
  <item>
    <bookName>Ado.net开发</bookName>
    <author>陈成城</author>
  </item>
</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://hi.baidu.com/kongfl888/item/0f04548bfad13b59840fab82

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值