实现用于 Web 应用程序的缓存。无法继承此类。
命名空间:System.Web.Caching
程序集:System.Web(在 system.web.dll 中)
Public NotInheritable Class Cache
Implements IEnumerable
public sealed class Cache : IEnumerable
public ref class Cache sealed : IEnumerable
public final class Cache implements IEnumerable
public final class Cache implements IEnumerable
对于每个应用程序域均创建该类的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。有关此类实例的信息通过 HttpContext 对象的 Cache 属性或 Page 对象的 Cache 属性来提供。
下面的示例是一个页面,该页面为用户显示缓存中某项的赋值,当该项从缓存中移除时将通知用户。它创建 RemovedCallback 方法,该方法具有 CacheItemRemovedCallback 委托的签名,以在缓存项被移除时通知用户并使用 CacheItemRemovedReason 枚举告诉用户该项被移除的原因。此外,它使用 Cache.Item 属性将对象添加到缓存中并检索这些对象的值。在 AddItemToCache 方法中,它使用 Cache.Add 方法向缓存中添加项。若要使用 CacheItemRemovedCallback 委托,您必须使用此方法或 Cache.Insert 方法向缓存中添加项,以便该项被移除时 ASP.NET 能自动调用正确的方法。自定义的 RemoveItemFromCache 方法使用 Cache.Remove 方法显式地从缓存中删除该项,这导致调用 RemovedCallback 方法。
<%@ Page Language="VB" %>
<html>
<Script runat=server>
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
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), TimeSpan.Zero, CacheItemPriority.High, onRemove)
End If
End Sub
Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
If (Not IsNothing(Cache("Key1"))) Then
Cache.Remove("Key1")
End If
End Sub
</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
Response.Write("Value of cache key: <B>" + Server.HtmlEncode(CType(Cache("Key1"),String)) + "</B>")
End If
%>
</body>
</html>
<html>
<Script runat=server language="C#">
static bool itemRemoved = false;
static CacheItemRemovedReason reason;
CacheItemRemovedCallback onRemove = null;
public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
itemRemoved = true;
reason = r;
}
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), TimeSpan.Zero, CacheItemPriority.High, onRemove);
}
public void RemoveItemFromCache(Object sender, EventArgs e) {
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
</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 {
Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
}
%>
</body>
</html>
<html>
<Script runat=server language="JScript">
static var itemRemoved : boolean = false;
static var reason : CacheItemRemovedReason;
var onRemove : CacheItemRemovedCallback = null;
public function RemovedCallback(k : String, v : Object, r : CacheItemRemovedReason){
itemRemoved = true;
reason = r;
}
public function AddItemToCache(sender : Object, e : EventArgs) {
itemRemoved = false;
onRemove = this.RemovedCallback;
if (Cache["Key1"] == null)
Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(10), TimeSpan.Zero, CacheItemPriority.High, onRemove);
}
public function RemoveItemFromCache(sender : Object, e : EventArgs) {
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}
</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 + "</B>");
}
else {
Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"].ToString()) + "</B>");
}
%>
</body>
</html>
System.Object
System.Web.Caching.Cache
该类型对于多线程操作是安全的。
Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
.NET Framework
受以下版本支持:2.0、1.1、1.0