Cache缓存使用相关

一.使用说明

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.");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值