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 該方法被呼叫。
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 |
在方法呼叫的 |
| NoSlidingExpiration |
用作 |
屬性
| 名稱 | Description |
|---|---|
| Count |
會取得快取中儲存的物品數量。 |
| EffectivePercentagePhysicalMemoryLimit |
取得應用程式在開始移除快取項目前,可被應用程式消耗的實體記憶體百分比 ASP.NET |
| EffectivePrivateBytesLimit |
取得快取可用的位元組數。 |
| Item[String] |
取得或設定快取項目在指定的鍵值。 |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IEnumerable.GetEnumerator() |
回傳一個能夠遍歷物件集合的 Cache 列舉器。 |
擴充方法
| 名稱 | Description |
|---|---|
| AsParallel(IEnumerable) |
啟用查詢的平行處理。 |
| AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
| Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
| OfType<TResult>(IEnumerable) |
根據指定的型別篩選 IEnumerable 的專案。 |
適用於
執行緒安全性
此類型是安全線程。