.NET Framework 類別庫
Cache 類別

實作 Web 應用程式的快取。這個類別無法被繼承。

命名空間: System.Web.Caching
組件: System.Web (在 system.web.dll 中)

語法

Visual Basic (宣告)
Public NotInheritable Class Cache
    Implements IEnumerable
Visual Basic (使用方式)
Dim instance As Cache
C#
public sealed class Cache : IEnumerable
C++
public ref class Cache sealed : IEnumerable
J#
public final class Cache implements IEnumerable
JScript
public final class Cache implements IEnumerable
備註

每一應用程式定義域建立這個類別的一個執行個體,並且只要應用程式定義域保持為作用中,執行個體就能保持有效。這個類別的執行個體相關資訊可透過 HttpContext 物件的 Cache 屬性,或 Page 物件的 Cache 屬性來取得。

TopicLocation
HOW TO:將項目加入至快取建置 ASP .NET Web 應用程式
HOW TO:將項目加入至快取在 Visual Studio 中建立 ASP .NET Web 應用程式
HOW TO:從 ASP.NET 中的快取刪除項目建置 ASP .NET Web 應用程式
HOW TO:從 ASP.NET 中的快取刪除項目在 Visual Studio 中建立 ASP .NET Web 應用程式
範例

下列範例將示範一個頁面,為使用者顯示指派給快取項目的值,而且當從快取中移除該項目時,會通知使用者。它會建立 RemovedCallback 方法,該方法具有 CacheItemRemovedCallback 委派 (Delegate) 的簽章,以在移除快取項目時通知使用者,並使用 CacheItemRemovedReason 列舉型別,告訴使用者移除該項目的原因。此外,也會使用 Cache.Item 屬性,將物件加入快取中,並擷取這些物件的值。在 AddItemToCache 方法中,會使用 Cache.Add 方法,將項目加入快取中。若要使用 CacheItemRemovedCallback 委派,您必須使用這個方法或 Cache.Insert 方法,將項目加入快取中,讓 ASP.NET 可以在移除項目時自動呼叫適當的方法。自訂的 RemoveItemFromCache 方法會使用 Cache.Remove 方法,明確地從快取中刪除項目,使 RemovedCallback 方法被叫用 (Invoke)。

Visual Basic
<%@ 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>
C#
<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>
JScript
<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
請參閱

標記 :


Page view tracker