系列目录:

SqlDependency缓存用法

Asp.net使用SqlDependency

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

CacheDependency用法

AggregateCacheDependency 用法

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

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

按Msdn解释,CacheDependency在存储于 ASP.NET 应用程序的 Cache 对象中的项与文件、缓存键、文件或缓存键的数组或另一个 CacheDependency 对象之间建立依附性关系。CacheDependency 类监视依附性关系,以便在任何这些对象更改时,该缓存项都会自动移除。

CacheDependency有几中重载,各作用如下。

//假设缓存的来源文件是当前目录下的data.xml文件

    //缓存依赖的文件路径

CacheDependency mydep =newCacheDependency("data.xml");

    //缓存依赖的文件可以有多个

CacheDependency mydep1=newCacheDependency(newstring[]{"data.xml","data1.xml"});

    //检查缓存依赖更改的依据时间

CacheDependency mydep2 =newCacheDependency("data.xml", DateTime.Now);

    //检查多个依赖文件更改的依据时间

CacheDependency mydep3 =newCacheDependency(newstring[] { "data.xml", "data1.xml"}, DateTime.Now);

    //检查依赖多个文件,也依赖多个缓存键值

CacheDependency mydep4 =newCacheDependency(newstring[] { "data.xml", "data1.xml"},newstring[] { "Category", "Category1"});

    //关联依赖,还可以依赖于另一个文件缓存依赖

CacheDependency mydep5 =newCacheDependency(newstring[] { "data.xml", "data1.xml"},newstring[] { "Category", "Category1"}, mydep);

    //文件和键值上次修改的依据时间

CacheDependency mydep6 =newCacheDependency(newstring[] { "data.xml", "data1.xml"},newstring[] { "Category", "Category1"}, DateTime.Now);

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

CacheDependency mydep6 =newCacheDependency(newstring[] { "data.xml", "data1.xml"},newstring[] { "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数据。编写后台代码,如下:

usingSystem.Data;usingSystem.Web.Caching;namespaceSqlDependencyInAspNet
{publicpartialclassCacheDependencyPage : System.Web.UI.Page
    {protectedvoidPage_Load(objectsender, EventArgs e)
        {if(!IsPostBack)
            {
                GetData();
            }
        }privatevoidGetData()
        {
            DataTable tableData =newDataTable();if(Cache["data"] ==null)
            {
                DataSet ds =newDataSet();stringfilePath =Server.MapPath("~/App_Data/XmlData.xml");
                ds.ReadXml(filePath);
                tableData =ds.Tables[0];
                CacheDependency cdy =newCacheDependency(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中的内容。

CacheDependency用法相关推荐

  1. Cache总义Cache用法之页面声明

    Cache总义Cache用法之页面声明 <%@ outputCache Duration="#ofseconds" Location="Any|Client|Dow ...

  2. 缓存依赖中cachedependency对象

    缓存依赖主要提供以下功能: 1.SQL 缓存依赖项可用于应用程序缓存和页输出缓存. 2.可在 SQL Server 7.0 及更高版本中使用 SQL 缓存依赖项. 3.可以在网络园(一台服务器上存在多 ...

  3. 细说 ASP.NET Cache 及其高级用法

    阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先 ...

  4. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  5. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  6. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  7. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  8. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

  9. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

最新文章

  1. 如何超越console.log并充分利用浏览器的调试控制台
  2. linux mysql内网_在Linux中mysql的一些基本操作
  3. 2亿QQ用户大调度背后的架构设计和高效运营(上)
  4. ChannelFactory.Endpoint 上的地址属性为空。ChannelFactory 的终结点必须指定一个有效的地址。...
  5. 求1~n的全排列组合
  6. 面向侧面的程序设计AOP-------《二》本质
  7. pc端文本_使用即将推出的Windows功能从PC发送文本
  8. 单片机实验:交通灯控制
  9. Oracle建立表空间,用户等环节
  10. 21天Jenkins打卡Day14-maven服务
  11. Android通话录音
  12. jar文件怎么打开 查看jar文件内容操作方法
  13. 孙宇晨大举进驻NFT艺术的背后:区块链+艺术还能有怎样的玩法?
  14. python 经典图书排行榜_知乎必读书单排行榜
  15. PRML读书笔记(一)
  16. iOS 图片涂鸦功能
  17. 痞子衡嵌入式:利用GPIO模块来测量i.MXRT1xxx的系统中断延迟时间
  18. 斯坦福大学卷积神经网络----Module 1 Lesson 4 反向传播
  19. MTK Wlan驱动功能
  20. 介绍Python/Django的在线好书推荐

热门文章

  1. C语言指针、数组与sizeof运算符
  2. 查找数组中任一峰值的下标
  3. C/C++中*和的用法详解
  4. c语言词法分析程序,词法分析器(c语言实现)
  5. linux命令实验设备,实验二 Linux系统的常用命令
  6. 「SVN」Ubuntu 版本库搭建+使用 完整教程
  7. 学习笔记:Zookeeper 应用案例(上下线动态感知)
  8. 1CCTableView的使用,TableView响应和小格子tableView实现
  9. 4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)
  10. 1线程同步:互斥量,死锁