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

  • 相关阅读:
    IOS添加pch预编译文件
    UITableview控件基本使用
    两种单例模式的写法
    提交app Store审核时,Missing 64-bit support问题的解决办法
    IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换
    获取UITableView每行中不同的UITextField输入的内容(例如修改登陆密码)
    UITextField常用属性归纳:文本框样式、文字样式、键盘样式、左右视图样式、清除按钮设置等,iosuitextfield
    UITabBarController(标签栏控制器)
    iOS基础控件UINavigationController中的传值
    IOS开发之多线程
  • 原文地址:https://www.cnblogs.com/soundcode/p/2955392.html
Copyright © 2020-2023  润新知