Cache クラス
Web アプリケーションのキャッシュを実装します。このクラスは継承できません。
名前空間: System.Web.Caching
アセンブリ: System.Web (system.web.dll 内)
構文
'宣言
Public NotInheritable Class Cache
Implements IEnumerable
'使用
Dim instance As Cache
public sealed class Cache : IEnumerable
public ref class Cache sealed : IEnumerable
public final class Cache implements IEnumerable
public final class Cache implements IEnumerable
適用できません。
解説
このクラスのインスタンスは、アプリケーション ドメインごとに 1 つずつ作成されます。このインスタンスは、アプリケーション ドメインがアクティブである限り有効です。このクラスのインスタンスに関する情報は、HttpContext オブジェクトの Cache プロパティ、または Page オブジェクトの Cache プロパティから取得できます。
メモ : |
---|
Cache クラスは、ASP.NET アプリケーション以外での使用を目的としていません。このクラスは、Web アプリケーションのキャッシュを提供するために、ASP.NET 用にデザインおよびテストされました。コンソール アプリケーションや Windows フォーム アプリケーションなど、他の種類のアプリケーションでは、ASP.NET のキャッシュは正しく動作しない場合があります。 |
トピック | 場所 |
---|---|
方法 : ASP.NET のキャッシュから項目を削除する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : キャッシュにアイテムを追加する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : ASP.NET のキャッシュから項目を削除する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : キャッシュにアイテムを追加する | Visual Studio ASP .NET での Web アプリケーションの作成 |
方法 : ASP.NET のキャッシュから項目を削除する | ASP .NET Web アプリケーションの作成 |
方法 : キャッシュにアイテムを追加する | ASP .NET Web アプリケーションの作成 |
使用例
キャッシュ内の項目に割り当てられた値をユーザーに表示し、項目がキャッシュから削除されたときにユーザーに通知するページの例を次に示します。この例では、CacheItemRemovedCallback デリゲートのシグネチャを持つ RemovedCallback
メソッドを作成して、キャッシュ項目が削除されたときにユーザーに通知し、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>
.NET Framework のセキュリティ
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)。要求値 : LinkDemand。アクセス許可値 : Minimal。
継承階層
System.Object
System.Web.Caching.Cache
スレッド セーフ
この型は、スレッド セーフです。
プラットフォーム
Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition
Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。
バージョン情報
.NET Framework
サポート対象 : 3.0,2.0,1.1,1.0
参照
関連項目
Cache メンバ
System.Web.Caching 名前空間
HttpContext
CacheDependency
CacheItemRemovedCallback