Cache缓存使用相关

原创 2005年02月28日 16:17:00

一.使用说明

Cache.Insert  (String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)方法

参数

key

用于引用该对象的缓存键。

value

要插入缓存中的对象。

dependencies

该项的文件依赖项或缓存键依赖项。当任何依赖项更改时,该对象即无效,并从缓存中移除。如果没有依赖项,则此参数包含空引用(Visual Basic 中为 Nothing)。

absoluteExpiration

所插入对象将过期并被从缓存中移除的时间。

slidingExpiration

最后一次访问所插入对象时与该对象过期时之间的时间间隔。如果该值等效于 20 分钟,则对象在最后一次被访问 20 分钟之后将过期并被从缓存中移除。

priority

该对象相对于缓存中存储的其他项的成本,由 CacheItemPriority 枚举表示。该值由缓存在退出对象时使用;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。

onRemoveCallback

在从缓存中移除对象时将调用的委托(如果提供)。当从缓存中删除应用程序的对象时,可使用它来通知应用程序。

.此方法将用相同的 key 参数改写现有 Cache

注意   如果 keyvalue 参数为空,则发生 ArgumentNullException。如果将 slidingexpiration 参数设置为小于 TimeSpan.Zero 或大于一年,则发生 ArgumentOutOfRangeException。不能对同一个缓存项同时设置可调整到期和绝对到期时间。如果这样做,将发生 ArgumentException。

三.缓存清理、过期、文件依赖项和键依赖项

  • 清理是指当内存变得很少时,缓存尝试移除不常使用和不太重要的项。希望控制清理如何发生的程序员可以在项插入到缓存时为清理程序提供提示,指出创建项的相对成本和使项保持有用而必须具有的相对访问率。

  • 过期使程序员得以提供缓存项的生存期,其时间既可以是确切时间(例如,6:00 过期),也可以是相对于项的上次使用的时间(例如,上次访问项后 20 分钟过期)。项过期后将从缓存中被移除,以后若试图检索它,将返回空值,除非将它重新插入缓存。

  • 文件和键依赖项允许缓存项的有效性基于外部文件或其他缓存项。如果依赖项改变,则缓存项失效并从缓存中被移除。有关如何使用此功能的示例,请考虑以下方案:应用程序从定期更新的 XML 文件读取财务信息。应用程序处理文件中的数据并以可使用的格式创建表示该数据的对象图形。应用程序缓存该数据并在从中读取该数据的文件上插入依赖项。当更新该文件时,数据从缓存中被移除,应用程序可以重新读取它并重新插入该数据的更新副本。

四.CacheDependency 类

跟踪缓存依赖项,缓存依赖项可以是应用程序的 Cache 中的文件、目录或与其他对象的键。无法继承此类。

有关此类型所有成员的列表,请参阅 CacheDependency 成员。

System.Object
   System.Web.Caching.CacheDependency

[Visual Basic] NotInheritable Public Class CacheDependency Implements IDisposable

[C#] public sealed class CacheDependency : IDisposable

[C++] public __gc __sealed class CacheDependency : public IDisposable

[JScript] public class CacheDependency implements IDisposable

线程安全

此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。

备注

可以用 Add 和 Insert 方法向应用程序缓存中添加具有依赖项的项。

当向应用程序的 Cache 对象添加一项,从而为该项定义一个缓存依赖项时,将自动创建 CacheDependency 类的一个实例来跟踪对所指定文件、键或目录的更改。这有助于避免丢失在创建对象时和将其插入 Cache 时之间对对象进行的更改。CacheDependency 实例可以表示单个文件或目录、一组文件或目录,或者带有一系列缓存键的一组文件或目录(这些缓存键表示 Cache 对象中存储的其他项)。

示例

[Visual Basic, C#] 下面的示例说明如何使用 HasChanged 属性来确定 CacheDependency 是否在对 Cache 中某项的上一个请求之后已更改。将传入 start 参数的 dt 值设置为 DateTime.Now。

[Visual Basic] ' Insert the cache item. Dim dep As New 
CacheDependency(fileName, dt) myCache.Insert("key", "value", dep) '
 Check whether CacheDependency.HasChanged is true. If dep.HasChanged 
Then Response.Write("
The dependency has changed.") Else Response.Write("
The dependency has not changed.") End If

[C#] // Insert the cache item. CacheDependency dep = new CacheDependency(fileName, dt); 
cache.Insert("key", "value", dep); 
// Check whether CacheDependency.HasChanged is true. if (dep.HasChanged) Response.Write("
The dependency has changed."); else Response.Write("
The dependency has not changed.");
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag

缓存对于web开发有重要作用,尤其是大负荷web系统开发中。 缓存分很多种:服务器缓存,第三方缓存,浏览器缓存等。其中浏览器缓存是代价最小的,因为浏览器缓存依赖的是客户 端,而几乎不耗费服务器端的资...

关于“缓存着色(cache coloring, page coloring)”技术的相关资料介绍

为了了解缓存着色的作用,搜集很多资料,但是都不甚满意。有时间会按照自己的理解写一篇博客介绍。 page coloring、cache coloring、缓存着色,是相同的技术,叫法不一样而已。 ...

浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag

缓存对于web开发有重要作用,尤其是大负荷web系统开发中。 缓存分很多种:服务器缓存,第三方缓存,浏览器缓存等。其中浏览器缓存是代价最小的,因为浏览器缓存依赖的是客户 端,而几乎不耗费服务器端...

浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag

浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETaghttp://www.path8.net/tn/archives/2685作者: fen...

关于“缓存着色(cache coloring, page coloring)”技术的相关资料介绍

关于缓存着色(cache coloring)的相关资料

cache/ehcache缓存使用

  • 2015-10-23 21:25
  • 220KB
  • 下载

Spring缓存注解@Cache使用

参考资料 http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ http://swiftlet.net/a...

HTML5 使用application cache 接口实现离线数据缓存

1.配置缓存文件 cache manifest MIME TYPE:text/cache-manifest 文件名称:name.manifest 作用:用于配置需要缓存的文件 2.使用方法 在服务...

Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用

@Cacheable、@CachePut、@CacheEvict 注释介绍 表 1. @Cacheable 作用和配置方法 @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其...

使用.Net下的全局程序集共享缓存(Globe Assembly Cache GAC)详细攻略

使用GAC详细攻略作者:GhostBear在网上搜索了一大堆资料,但都没用。经过自己反复的测试,终于成功了。具体步骤如下: 部署程序集文件到GAC:1.      建一个类库文件,并给它签名。2.  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)