Cache 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
实现 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 对象的 属性 HttpContext 或 Cache 对象的 属性 Page 获取。
注意
类 Cache 不适合在 ASP.NET 应用程序之外使用。 它经过设计和测试,用于 ASP.NET,为 Web 应用程序提供缓存。 对于其他类型的应用程序(例如控制台应用程序或 Windows 窗体应用程序),请使用 ObjectCache 类。
构造函数
| Cache() | 
		 初始化 Cache 类的新实例。  | 
        	
字段
| NoAbsoluteExpiration | 
		 用于 Insert(String, Object) 方法调用中的   | 
        	
| NoSlidingExpiration | 
		 用作 Insert(String, Object) 或 Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback) 方法调用中的   | 
        	
属性
| Count | 
		 获取缓存中存储的项数。  | 
        	
| EffectivePercentagePhysicalMemoryLimit | 
		 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比。  | 
        	
| EffectivePrivateBytesLimit | 
		 获取可用于缓存的字节数。  | 
        	
| Item[String] | 
		 获取或设置指定键处的缓存项。  | 
        	
方法
显式接口实现
| IEnumerable.GetEnumerator() | 
		 返回可循环访问 Cache 对象集合的枚举数。  | 
        	
扩展方法
| Cast<TResult>(IEnumerable) | 
		 将 IEnumerable 的元素强制转换为指定的类型。  | 
        	
| OfType<TResult>(IEnumerable) | 
		 根据指定类型筛选 IEnumerable 的元素。  | 
        	
| AsParallel(IEnumerable) | 
		 启用查询的并行化。  | 
        	
| AsQueryable(IEnumerable) | 
		 将 IEnumerable 转换为 IQueryable。  | 
        	
适用于
线程安全性
此类型是线程安全的。