方法 : キャッシュにアイテムを追加する

更新 : 2007 年 11 月

Cache オブジェクトを使用して、アプリケーション キャッシュ内のアイテムにアクセスできます。アプリケーション キャッシュにアイテムを追加するには、Cache オブジェクトの Insert メソッドを使用します。このメソッドはキャッシュにアイテムを追加するメソッドです。このメソッドには、オプションで依存関係、有効期限、および削除通知を設定してアイテムを追加できるいくつかのオーバーロードがあります。Insert メソッドを使用してキャッシュにアイテムを追加する際に同じ名前のアイテムがキャッシュに存在した場合、キャッシュ内の既存のアイテムは置換されます。

また、Add メソッドを使用して、キャッシュにアイテムを追加することもできます。このメソッドでは、Insert メソッドと同じオプションを設定できますが、Add メソッドは、キャッシュに追加したオブジェクトを返します。また、Add メソッドを使用してキャッシュにアイテムを追加する際に同じ名前のアイテムがキャッシュに存在した場合、アイテムの置換は行われず、例外も発生しません。

このトピックでは、アプリケーション キャッシュにアイテムを追加する以下のさまざまな方法について説明します。

  • キーと値でアイテムを直接指定してキャッシュにアイテムを追加する。

  • Insert メソッドを使用してキャッシュにアイテムを追加する。

  • キャッシュにアイテムを追加し、依存関係を追加し、依存関係が変更されるとキャッシュからそのアイテムが削除されるようにする。依存関係は、他のキャッシュ アイテム、ファイル、または複数のオブジェクトに基づいて設定できます。

  • 有効期限ポリシーを設定してキャッシュにアイテムを追加するにはアイテムには依存関係を設定できる以外に、有効期限も設定できます。有効期限としては、経過時間 (スライド式有効期限) または特定の時間 (絶対有効期限) を設定できます。絶対有効期限またはスライド式有効期限のいずれかを定義できますが、両方は定義できません。

  • キャッシュにアイテムを追加し、キャッシュされたアイテムの相対優先順位を定義する。相対優先順位は、.NET Framework が削除するキャッシュ アイテムを判断するときの基準になります。優先順位が低いアイテムは優先順位が高いアイテムより先に削除されます。

  • Add メソッドを呼び出してアイテムを追加する。

ここに示す依存関係以外に、SQL Server テーブルまたはカスタムの依存関係に基づいた依存関係を作成することもできます。詳細については、「ASP.NET のキャッシュの概要」および「SqlCacheDependency クラスによる ASP.NET のキャッシュ」を参照してください。

また、CacheItemRemovedCallback デリゲートを使用して、アイテムがキャッシュから削除されると、アプリケーション キャッシュがアプリケーションに通知するように設定することもできます。実装例については、「方法 : キャッシュから項目が削除されたときにアプリケーションに通知する」を参照してください。

キーと値でアイテムを直接指定してキャッシュにアイテムを追加するには

  • アイテムのキーと値を指定してディクショナリにアイテムを追加する場合と同じ方法で、キャッシュにアイテムを追加します。

    CacheItem1 という名前のアイテムを Cache オブジェクトに追加するコード例を次に示します。

    Cache["CacheItem1"] = "Cached Item 1";
    
    Cache("CacheItem1") = "Cached Item 1"
    

Insert メソッドを使用してキャッシュにアイテムを追加するには

  • Insert メソッドを呼び出して、追加するアイテムのキーと値を渡します。

    CacheItem2 の名前の下に文字列を追加するコード例を次に示します。

    Cache.Insert("CacheItem2", "Cached Item 2");
    
    Cache.Insert("CacheItem2", "Cached Item 2")
    

依存関係を指定してキャッシュにアイテムを追加するには

  • Insert メソッドを呼び出して、CacheDependency オブジェクトのインスタンスを渡します。

    キャッシュ内の CacheItem2 という名前の別のアイテムに依存する CacheItem3 という名前のアイテムを追加するコード例を次に示します。

    string[] dependencies = { "CacheItem2" };
    Cache.Insert("CacheItem3", "Cached Item 3",
        new System.Web.Caching.CacheDependency(null, dependencies));
    
    Dim dependencies As String() = {"CacheItem2"}
    Cache.Insert("CacheItem3", "Cached Item 3", _
        New System.Web.Caching.CacheDependency( _
        Nothing, dependencies))
    

    XMLFile.xml というファイルに対するファイルの依存関係が設定された CacheItem4 という名前のアイテムをキャッシュに追加するコード例を次に示します。

    Cache.Insert("CacheItem4", "Cached Item 4",
        new System.Web.Caching.CacheDependency(
        Server.MapPath("XMLFile.xml")));
    
    Cache.Insert("CacheItem4", "Cached Item 4", _
        New System.Web.Caching.CacheDependency( _
        Server.MapPath("XMLFile.xml")))
    

    複数の依存関係を作成する方法を次のコード例に示します。ここでは、キャッシュ内の CacheItem1 という別のアイテムに対するキーの依存関係と、XMLFile.xml というファイルに対するファイルの依存関係が追加されます。

    System.Web.Caching.CacheDependency dep1 = 
        new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml"));
    string[] keyDependencies2 = { "CacheItem1" };
    System.Web.Caching.CacheDependency dep2 = 
        new System.Web.Caching.CacheDependency(null, keyDependencies2);
    System.Web.Caching.AggregateCacheDependency aggDep = 
        new System.Web.Caching.AggregateCacheDependency();
    aggDep.Add(dep1);
    aggDep.Add(dep2);
    Cache.Insert("CacheItem5", "Cached Item 5", aggDep);
    
    Dim dep1 As CacheDependency = _
        New CacheDependency(Server.MapPath("XMLFile.xml"))
    Dim keyDependencies2 As String() = {"CacheItem1"}
    Dim dep2 As CacheDependency = _
        New System.Web.Caching.CacheDependency(Nothing, _
        keyDependencies2)
    Dim aggDep As AggregateCacheDependency = _
        New System.Web.Caching.AggregateCacheDependency()
    aggDep.Add(dep1)
    aggDep.Add(dep2)
    Cache.Insert("CacheItem5", "Cached Item 5", aggDep)
    

有効期限ポリシーを設定してキャッシュにアイテムを追加するには

  • Insert メソッドを呼び出して、絶対有効期限またはスライド式有効期限を渡します。

    絶対有効期限を 1 分とするアイテムをキャッシュに追加するコード例を次に示します。

    Cache.Insert("CacheItem6", "Cached Item 6",
        null, DateTime.Now.AddMinutes(1d), 
        System.Web.Caching.Cache.NoSlidingExpiration);
    
    Cache.Insert("CacheItem6", "Cached Item 6", _
        Nothing, DateTime.Now.AddMinutes(1.0), _
        TimeSpan.Zero)
    

    変換する有効期限を 10 分とするアイテムをキャッシュに追加するコード例を次に示します。

    Cache.Insert("CacheItem7", "Cached Item 7",
        null, System.Web.Caching.Cache.NoAbsoluteExpiration,
        new TimeSpan(0, 10, 0));
    
    Cache.Insert("CacheItem7", "Cached Item 7", _
        Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _
        New TimeSpan(0, 10, 0))
    

優先度を設定したアイテムを Cache に追加するには

  • Insert メソッドを呼び出して、CacheItemPriority 列挙値の 1 つを指定します。

    優先順位値を High とするアイテムをキャッシュに追加するコード例を次に示します。

    Cache.Insert("CacheItem8", "Cached Item 8",
        null, System.Web.Caching.Cache.NoAbsoluteExpiration,
        System.Web.Caching.Cache.NoSlidingExpiration,
        System.Web.Caching.CacheItemPriority.High, null);
    
    Cache.Insert("CacheItem8", "Cached Item 8", _
        Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _
        System.Web.Caching.Cache.NoSlidingExpiration, _
        System.Web.Caching.CacheItemPriority.High, _
        Nothing)  
    

Add メソッドを使用してキャッシュにアイテムを追加するには

  • Add メソッドを呼び出します。すると、アイテムを表すオブジェクトが返されます。

    CacheItem9 という名前のアイテムをキャッシュに追加し、変数 CachedItem9 の値を、追加されたアイテムに設定するコード例を次に示します。

    string CachedItem9 = (string)Cache.Add("CacheItem9",
        "Cached Item 9", null,
        System.Web.Caching.Cache.NoAbsoluteExpiration,
        System.Web.Caching.Cache.NoSlidingExpiration, 
        System.Web.Caching.CacheItemPriority.Default,
        null);
    
    Dim CachedItem9 As String = CStr(Cache.Add("CacheItem9", _
        "Cached Item 9", Nothing, _
        System.Web.Caching.Cache.NoAbsoluteExpiration, _
        System.Web.Caching.Cache.NoSlidingExpiration, _
        System.Web.Caching.CacheItemPriority.Default, _
        Nothing))
    

参照

処理手順

方法 : ASP.NET のキャッシュから項目を削除する

方法 : キャッシュから項目が削除されたときにアプリケーションに通知する

方法 : キャッシュされたアイテムから値を取得する

概念

ASP.NET のキャッシュの概要

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

SqlCacheDependency クラスによる ASP.NET のキャッシュ