CacheDependency缓存依赖里面的 absoluteExpiration(绝对到期时间),弹性到期时间(slidingExpiration)...
按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中的内容。
=======================
您可以使用 absoluteExpiration parameter 参数和 slidingExpiration 参数将设有到期策略的项添加到 Cache 中。您可以定义绝对过期时间或弹性过期时间,但不能同时定义两者。在使用上述参数之一定义到期策略时,必须将另一个参数设置为零。Cache 类定义了两个自动执行该操作的字段:NoAbsoluteExpiration 和 NoSlidingExpiration。当定义绝对或弹性过期时间时,只要将适当的参数设置为其相应的字段值即可。下面的示例使用 Insert 方法将设有两分钟绝对到期时间的项添加到 Cache 中。
1: Cache.Insert("key","value",null,DateTime.Now.AddMinutes(1), System.Web.Caching.Cache.NoSlidingExpiration)
2:
1: /// <summary>
2: ///
3: /// </summary>
4: /// <param name="CacheKey">缓存key</param>
5: /// <param name="objObject">保存的对象</param>
6: /// <param name="objDependency">缓存依赖项,可以是一个文件,也可以是针对另外一个缓存</param>
7: /// <param name="AbsoluteExpiration">绝对过期时间(与弹性时间二者取一)</param>
8: /// <param name="SlidingExpiration">弹性过期时间,也就是在没有过期的情况下,你每次访问,都会延长重新计时(与绝对过期时间二者取一)</param>
9: public static void SetCache(string CacheKey, object objObject, CacheDependency objDependency,DateTime AbsoluteExpiration, TimeSpan SlidingExpiration)
10: {
11: Insert(CacheKey, objObject, objDependency, AbsoluteExpiration, SlidingExpiration);
12: }
13:
14:
1: private static void Insert(string CacheKey, object objObject, CacheDependency objDependency, DateTime AbsoluteExpiration, TimeSpan SlidingExpiration)
2: {
3:
4: objCache.Insert(CacheKey, objObject, objDependency, AbsoluteExpiration, SlidingExpiration);
5: }
6:
更详细的信息请查看
http://www.cnblogs.com/aierong/archive/2004/07/15/24653.html 推荐
http://www.cnblogs.com/smhy8187/articles/971712.html
CacheDependency缓存依赖里面的 absoluteExpiration(绝对到期时间),弹性到期时间(slidingExpiration)...相关推荐
- 缓存依赖中cachedependency对象
缓存依赖主要提供以下功能: 1.SQL 缓存依赖项可用于应用程序缓存和页输出缓存. 2.可在 SQL Server 7.0 及更高版本中使用 SQL 缓存依赖项. 3.可以在网络园(一台服务器上存在多 ...
- System.Web.Caching.Cache类 缓存 各种缓存依赖
原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...
- 为memcached增加缓存依赖的程序实现
节前的一篇文章中提出了为memcached增加缓存依赖的初步设想,本文对第一个思路进行实现. 实现思路 key1发生变化时,不立即移除 key2,key3.在每次返回key2,key3对象时检查key ...
- ASP.NET 数据库缓存依赖
By Peter A. Bromberg, Ph.D. 在ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为.以文件为基础的依赖是最有用的,文件依赖项是通过使用 Cach ...
- Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别
第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...
- 【状态保持】Cache 基于SQL 数据库 的缓存依赖 轮询机制详解
首先声明一下如果您还不了解什么是Cache(缓存)请您先搜一下有关信息然后再看这篇文章. 当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过两种途径获 ...
- 关于mybatis里面的Executor--转载
原文地址:http://blog.csdn.net/w_intercool/article/details/7893344 使用mybatis查寻数据,跟踪其执行流程 最开始执行的语句 [java] ...
- nginx里面的rewrite重写模块详解
文章目录 前言 Rewrite Rewrite实用场景 Nginx正则表达式(又有正则了啊) Rewrite命令 last和break比较有什么不同? Location模块 location有哪些分类 ...
- 面试问外观模式???这不就是设计模式里面的吗?我给你上一课吧,面试官
面试问外观模式???这不就是设计模式里面的吗?我给你上一课吧,面试官 外观模式 介绍 实现 步骤 1 Shape.java 步骤 2 Rectangle.java Square.java Circle ...
最新文章
- vue 导航栏刷新页面定位:
- 大数据学习,Hive是丢不掉的!Hive练习题50道,你也试试!
- 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
- 线程池是如何重复利用空闲的线程来执行任务的?
- oracle支持非关系数据库,Oracle-03: 关系型数据库和非关系的数据库的各自优缺点与区别...
- 揭秘阿里中台!一文看懂阿里推荐业务的两大利器 | 赠书
- maven 单独构建多模块项目中的单个模块
- C语言函数声明与定义(待删除)
- LeetCode(303)——区域和检索 - 数组不可变(JavaScript)
- python免费领取视频-最经典Python爬虫全套视频免费领,带你从0开始学爬虫
- mysql 查询每个班级的前三名
- NRF52832-USB-Dangle-DIY笔记
- 学术论文写作方法和技巧
- 依图科技:多个人工智能应用领域达到全球领先水平 | 百万人学AI评选
- 无法修改linux密码Authentication token manipulation error 问题解决
- ipad协议835最新版
- java函数参数使用冒号_java8中:: 用法示例(JDK8双冒号用法)
- 【阿里云-容器】阿里云容器服务Kubernetes版快速入门
- 用python做名片管理器_Python简单的名片管理器
- 高低温湿热试验箱的简介
热门文章
- 在windows XP运行3660路由器仿真器
- Vue:对象更改检测注意事项
- centos7下搭建git和gitlab版本库
- 翻译:MariaDB RENAME TABLE语句
- Microsoft.Data.ConnectionUI.DataConnectionDialog
- #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
- Windows Phone开发(48):不可或缺的本地数据库
- 跨平台图表控件TeeChart使用教程:导入XML数据
- php获取svn文件,然后ftp上传服务器代码
- 第四课:算法效率的度量和存储空间需求