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 のセキュリティ

継承階層

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

その他の技術情報

アプリケーション データのキャッシュ