Cache 类

定义

实现 Web 应用程序的缓存。 此类不能被继承。

public ref class Cache sealed : System::Collections::IEnumerable
public sealed class Cache : System.Collections.IEnumerable
type Cache = class
    interface IEnumerable
Public NotInheritable Class Cache
Implements IEnumerable
继承
Cache
实现

示例

以下示例是一个页面,显示用户分配给缓存中某个项的值,然后在从缓存中删除该项时通知他们。 它创建一个 RemovedCallback 具有委托签名 CacheItemRemovedCallback 的方法,用于在删除缓存项时通知用户,并使用 CacheItemRemovedReason 枚举告诉他们删除它的原因。 此外,它还使用 Cache.Item[] 属性将对象添加到缓存并检索这些对象的值。 在 AddItemToCache 方法中,它使用 Cache.Add 该方法将项添加到缓存中。 若要使用 CacheItemRemovedCallback 委托,必须使用此方法或 Cache.Insert 方法将项添加到缓存中,以便删除项时 ASP.NET 可以自动进行正确的方法调用。 自定义 RemoveItemFromCache 方法使用 Cache.Remove 该方法从缓存中显式删除项,从而导致 RemovedCallback 调用该方法。

注释

以下代码片段访问的缓存实例是此示例继承的对象的成员 Page

<html>
 <Script runat=server language="C#">
// <snippet2>
    static bool itemRemoved = false;
    static CacheItemRemovedReason reason;
    CacheItemRemovedCallback onRemove = null;

    public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
      itemRemoved = true;
      reason = r;
    }
// </snippet2>

// <snippet3>
    public void AddItemToCache(Object sender, EventArgs e) {
        itemRemoved = false;

        onRemove = new CacheItemRemovedCallback(this.RemovedCallback);

        if (Cache["Key1"] == null)
          Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
    }
// </snippet3>

// <snippet4>
    public void RemoveItemFromCache(Object sender, EventArgs e) {
        if(Cache["Key1"] != null)
          Cache.Remove("Key1");
    }
// </snippet4>
 </Script>
 <body>
  <Form runat="server">
   <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
   <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
  <% if (itemRemoved) {
        Response.Write("RemovedCallback event raised.");
        Response.Write("<BR>");
        Response.Write("Reason: <B>" + reason.ToString() + "</B>");
     }
     else {
// <snippet5>
        Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
// </snippet5>
     }
  %>
 </body>
</html>
<%@ Page Language="VB" %>

<html>
 <Script runat=server>
' <snippet2>
    Shared itemRemoved As boolean = false
    Shared reason As CacheItemRemovedReason
    Dim onRemove As CacheItemRemovedCallback

    Public Sub RemovedCallback(k As String, v As Object, r As CacheItemRemovedReason)
      itemRemoved = true
      reason = r
    End Sub
' </snippet2>

' <snippet3>
    Public Sub AddItemToCache(sender As Object, e As EventArgs)
        itemRemoved = false

        onRemove = New CacheItemRemovedCallback(AddressOf Me.RemovedCallback)

        If (IsNothing(Cache("Key1"))) Then
          Cache.Add("Key1", "Value 1", Nothing, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove)
        End If
    End Sub
' </snippet3>

' <snippet4>
    Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
        If (Not IsNothing(Cache("Key1"))) Then
          Cache.Remove("Key1")
        End If
    End Sub
' </snippet4>
 </Script>

 <body>
  <Form runat="server">
    <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
    <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
<%
If (itemRemoved) Then
    Response.Write("RemovedCallback event raised.")
    Response.Write("<BR>")
    Response.Write("Reason: <B>" + reason.ToString() + "</B>")
Else
' <snippet5>
    Response.Write("Value of cache key: <B>" + Server.HtmlEncode(CType(Cache("Key1"),String)) + "</B>")
' </snippet5>
End If
%>
 </body>
</html>

注解

每个应用程序域创建此类的一个实例,只要应用程序域保持活动状态,该实例就保持有效。 有关此类实例的信息可通过 Cache 对象的属性 HttpContextCache 对象的属性 Page 获得。

注释

Cache 类不适用于 ASP.NET 应用程序之外。 它经过设计和测试,用于 ASP.NET,以提供 Web 应用程序的缓存。 对于其他类型的应用程序(如控制台应用程序或Windows 窗体应用程序),请使用 ObjectCache 类。

构造函数

名称 说明
Cache()

初始化 Cache 类的新实例。

字段

名称 说明
NoAbsoluteExpiration

在方法调用中的参数中absoluteExpirationInsert(String, Object)用于指示项不应过期。 此字段是只读的。

NoSlidingExpiration

用作slidingExpiration方法调用中的Insert(String, Object)Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)参数,以禁用滑动过期。 此字段是只读的。

属性

名称 说明
Count

获取缓存中存储的项数。

EffectivePercentagePhysicalMemoryLimit

获取应用程序可以在 ASP.NET 开始从缓存中删除项之前使用的物理内存的百分比。

EffectivePrivateBytesLimit

获取缓存可用的字节数。

Item[String]

获取或设置指定键处的缓存项。

方法

名称 说明
Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)

将指定项添加到 Cache 具有依赖项、过期和优先级策略的对象,以及一个委托,可用于在从 Cache中删除插入项时通知应用程序。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Get(String)

Cache 对象中检索指定的项。

GetEnumerator()

检索用于循环访问键设置及其缓存中包含的值的字典枚举器。

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)

将对象 Cache 插入到具有依赖项、过期和优先级策略的对象中,以及一个委托,可用于在从 Cache中删除插入的项时通知应用程序。

Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback)

将对象 Cache 与依赖项、过期策略和委托一起插入对象,该委托可用于在从缓存中删除项之前通知应用程序。

Insert(String, Object, CacheDependency, DateTime, TimeSpan)

使用依赖项和过期策略将对象 Cache 插入其中。

Insert(String, Object, CacheDependency)

将对象插入具有文件或密钥依赖项的对象 Cache

Insert(String, Object)

使用枚举提供的Cache默认值,使用缓存键将项CacheItemPriority插入到对象中以引用其位置。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
Remove(String)

从应用程序 Cache 的对象中删除指定项。

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

显式接口实现

名称 说明
IEnumerable.GetEnumerator()

返回一个枚举器,该枚举器可以循环访问 Cache 对象集合。

扩展方法

名称 说明
AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryable

Cast<TResult>(IEnumerable)

IEnumerable 的元素强制转换为指定类型。

OfType<TResult>(IEnumerable)

根据指定类型筛选 IEnumerable 的元素。

适用于

线程安全性

此类型是线程安全的。

另请参阅