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

用于 Insert(String, Object) 方法调用中的 absoluteExpiration 参数中以指示项从不到期。 此字段为只读。

NoSlidingExpiration

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

属性

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)

Cache 对象插入项,该项带有一个缓存键引用其位置,并使用 CacheItemPriority 枚举提供的默认值。

Insert(String, Object, CacheDependency)

Cache 中插入具有文件依赖项或键依赖项的对象。

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

Cache 中插入具有依赖项和到期策略的对象。

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

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

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

将对象与依赖项、到期策略以及可用于在从缓存中移除项之前通知应用程序的委托一起插入到 Cache 对象中。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Remove(String)

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

ToString()

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

(继承自 Object)

显式接口实现

IEnumerable.GetEnumerator()

返回可循环访问 Cache 对象集合的枚举数。

扩展方法

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryable

适用于

线程安全性

此类型是线程安全的。

另请参阅