缓存依赖中cachedependency对象及周边小讲
|
CacheDependency跟踪缓存依赖项,缓存依赖项可以是应用程序的 Cache 中的文件、目录或与其他对象的键,可用于实现自定义缓存依赖。//对文件可起作用。 SqlCacheDependency类在所有受支持的 SQL Server 版本 (7.0,2000,2005) 上监视特定的 SQL Server 数据库表,以便在该表发生更改时,自动从 Cache 中删除与该表关联的项。数据库表发生更改时,将自动删除缓存项,并向 Cache 中添加新版本的项。在使用 SQL Server 2005 数据库时,SqlCacheDependency 类还支持与 System.Data.SqlClient.SqlDependency 类进行集成。使用 SQL Server 2005 的查询通知机制来检测使 SQL 查询结果无效的数据更改。与 SQL 查询关联的任何缓存项都将从 System.Web.Caching.Cache 中移除。在使用 SQL Server 2005 时,可以使用 SqlCacheDependency 类向应用程序的 Cache 添加依赖于 SQL Server 数据库表或 SQL 查询的项。//对数据表的支持 AggregateCacheDependency类监视依赖项对象的集合,以便在任何依赖项对象更改时,该缓存项都会自动移除。数组中的对象可以是CacheDependency或者SqlCacheDependency对象、从 CacheDependency派生的自定义对象或这些对象的任意组合. AggregateCacheDependency类与CacheDependency类的不同之处在于前者允许您将不同类型的多个依赖项与单个缓存项关联。例如,如果您创建一个从 SQL Server 数据库表和 XML 文件导入数据的页,则可创建一个SqlCacheDependency对象来表示数据库表的依赖项,以及一个CacheDependency来表XML 文件的依赖项。可创建 AggregateCacheDependency类的一个实例,将每个依赖项添加到该类中,而不是为每个依赖项调用 Cache.Insert 方法。然后,可使用单个Insert 调用使该页依赖于 AggregateCacheDependency实例。 其中,本章主要讲述 CacheDependency的用法。CacheDependency有几中重载,各作用如下。 //假设缓存的来源文件是当前目录下的data.xml文件 //缓存依赖的文件路径 //缓存依赖的文件可以有多个 //检查缓存依赖更改的依据时间 //检查多个依赖文件更改的依据时间 //检查依赖多个文件,也依赖多个缓存键值 //关联依赖,还可以依赖于另一个文件缓存依赖 //文件和键值上次修改的依据时间 //文件、另一个缓存依赖和键值上次修改的依据时间 实例: 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)//用于引用该项的缓存键。如果缓存改变,则true;详情百度c#的Cache对象!
{
DataSet ds = new DataSet();
string filePath = Server.MapPath("~/App_Data/XMLFile.xml");//服务器数据绝对地址
ds.ReadXml(filePath);//读取文件内的数据,保存在ds里
tableData = ds.Tables[0];
CacheDependency cdy = new CacheDependency(filePath,DateTime.Now);
Cache.Insert("data",tableData,cdy);//通过使用 Insert(重载Insert方法)方法将项添加到缓存中
//if (cdy.HasChanged)
//{
System.Diagnostics.Debug.WriteLine("Xml已变更");
/ |
