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 叫用 方法。

注意

下列程式碼片段所存取的 Cache 實例是這個範例繼承的物件 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 Forms應用程式,請使用 類別 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 移除插入項目時使用委派 (Delegate) 來告知您的應用程式。

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

適用於

執行緒安全性

此型別具備執行緒安全。

另請參閱