ASP.NET 缓存(8)

简介:

有时候,数据源可能会对其他动作做出反应。但是,如果你的代码使用了缓存,你可能仍然没有意识到数据源的改变,仍然使用的缓存中过期的信息。为了解决这个问题,ASP.NET支持缓存依赖。缓存依赖允许你创建的缓存项依赖于其他资源,这样当资源改变,缓存项会被自动删除。

有3种类型的缓存依赖。

依赖其他缓存项

依赖文件或者文件夹

依赖数据库查询


要创建缓存依赖,你先需要创建一个CacheDependency对象,然后在插入依赖缓存项的时候使用它。下面的例子演示了,创建一个缓存项,然后当XML文件改变删除或者覆盖的时候,该缓存项会自动的清除。 
// Create a dependency for the ProductList.xml file. 
CacheDependency prodDependency = new CacheDependency( 
Server.MapPath("ProductList.xml")); 
// Add a cache item that will be dependent on this file. 
Cache.Insert("ProductInfo", prodInfo, prodDependency); 
如果你指定缓存依赖到一个文件夹,那么他会监视到对文件夹里文件的添加,删除,修改。改变子目录,比如重命名,删除,新建子文件夹也会改变缓存依赖。但是改变更深一层的目录,比如子文件夹里创建子文件夹或者文件,不会影响到缓存依赖。

缓存依赖是在他被创建的时候就开始监视的,你也可以使用重载的构造函数来指定一个特定的时间开始监视。


还有的构造函数接受一组文件名或者一组缓存的key,看下面的例子,使用构造函数创建一个依赖于其他缓存的缓存依赖。

Cache["Key1"] = "Cache Item 1"; 
// Make Cache["Key2"] dependent on Cache["Key1"]. 
string[] dependencyKey = new string[1]; 
dependencyKey[0] = "Key1"; 
CacheDependency dependency = new CacheDependency(null, dependencyKey); 
Cache.Insert("Key2", "Cache Item 2", dependency); 
 

接下来,当Cache["Key 1"] 改变或者被删除,Cache["Key 2"]也会自动的被删除。



















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/589198 ,如需转载请自行联系原作者




相关文章
|
4月前
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
|
4月前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
4月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
120 1
|
4月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
4月前
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
124 1
|
4月前
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
|
缓存 开发框架 .NET
ASP.NET Core 缓存
Get新知识: 缓存相关概念:缓存的类型:总结:总的来说,私有缓存会减少网络带宽的需求,同时会减少从缓存到API的请求。因为私有缓存是存储在客户端浏览器的,对于请求来说,如果缓存还在有限期内,那么请求连网络请求都不会发出会直接在客户端浏览器获取到响应,这样就减少网络请求次数,同样也会减少API请求次数。而共享缓存不会节省缓存到API的网路带宽,但是它会减少请求到API的请求。因为共享缓存是...
52 0
ASP.NET Core 缓存
|
缓存 监控 NoSQL
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
204 0
|
存储 SQL 缓存
ASP.NET Core MVC 从入门到精通之缓存
ASP.NET Core MVC 从入门到精通之缓存
143 0
|
存储 缓存 开发框架
Asp.Net Core 2.1+的视图缓存(响应缓存)
Asp.Net Core 2.1+的视图缓存(响应缓存)
96 0