• CacheDependency用法


    系列目录:

    SqlDependency缓存用法

    Asp.net使用SqlDependency

    SqlCacheDependency使用命令通知使缓存无效

    CacheDependency用法

    AggregateCacheDependency 用法

    SqlCacheDependency使用轮流检测技术(轮询)使缓存无效

    -------------------------------------------------------------------------------------------

          按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中的内容。

  • 相关阅读:
    DataGrid
    取整、取小数点位数
    如何跨浏览器使用连续字符的换行
    如何给 legend 标签设定宽度
    25个简洁优美的网站设计
    重新发现HTML表格
    用户研究角度看设计(2):用户为何视若无睹
    lineheight 属性的继承问题
    jQuery技巧总结
    web2.0网站配色方案
  • 原文地址:https://www.cnblogs.com/soundcode/p/2955392.html
Copyright © 2020-2023  润新知