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 該方法被呼叫。

Note

下方片段所存取的 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 物件的 HttpContext 屬性或 Cache 物件的 Page 屬性取得。

Note

Cache 類別不適用於非 ASP.NET 應用。 它被設計並測試用於 ASP.NET,用於為網頁應用程式提供快取功能。 對於其他類型的應用程式,例如主控台應用程式或Windows Forms應用程式,則使用 ObjectCache 類別。

建構函式

名稱 Description
Cache()

初始化 Cache 類別的新執行個體。

欄位

名稱 Description
NoAbsoluteExpiration

在方法呼叫的absoluteExpiration參數中用於Insert(String, Object)表示該項目不應過期。 此欄位僅供讀取。

NoSlidingExpiration

用作slidingExpiration某個或Insert(String, Object)方法呼叫中的參數Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback),用以停用滑動過期。 此欄位僅供讀取。

屬性

名稱 Description
Count

會取得快取中儲存的物品數量。

EffectivePercentagePhysicalMemoryLimit

取得應用程式在開始移除快取項目前,可被應用程式消耗的實體記憶體百分比 ASP.NET

EffectivePrivateBytesLimit

取得快取可用的位元組數。

Item[String]

取得或設定快取項目在指定的鍵值。

方法

名稱 Description
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, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)

將物件插入 Cache 物件,並附有相依關係、到期與優先權政策,並有一個代理,你可以用來通知應用程式中插入的項目何時從 Cache.

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

它會將物件插入 Cache 物件,連同相依關係、到期政策,以及一個代理檔,讓你在項目從快取移除前通知應用程式。

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

插入一個物件,並 Cache 帶有相依關係與到期政策。

Insert(String, Object, CacheDependency)

插入一個具有檔案或金鑰相依關係的物件。Cache

Insert(String, Object)

使用列舉提供的Cache預設值,將一個項目插入CacheItemPriority物件中,並使用快取鍵來參考其位置。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
Remove(String)

移除應用程式物件中指定的項目 Cache

ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

名稱 Description
IEnumerable.GetEnumerator()

回傳一個能夠遍歷物件集合的 Cache 列舉器。

擴充方法

名稱 Description
AsParallel(IEnumerable)

啟用查詢的平行處理。

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryable

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。

OfType<TResult>(IEnumerable)

根據指定的型別篩選 IEnumerable 的專案。

適用於

執行緒安全性

此類型是安全線程。

另請參閱