6

asp.netでのキャッシュの依存関係の可能性について少し戸惑っていますが、それらの使用方法がわかりません。

キャッシュ内の他の要素を変更した場合に要素が無効になるように、HttpRuntime.Cacheにアイテムを追加したいと思います。依存関係はキーで定義する必要があります。

私はこのような関数が欲しいです:

public MyObject LoadFromCache(string itemDescriptor, IEnumerable<string> dependencies)
{
    var ret = HttpRuntime.Cache[itemDescriptor] as MyObject;
    if (ret == null)
    {
        ret = LoadFromDataBase(itemDescriptor);

        //this is the part I'm not able to figure out. Adding more than one dependency items.
        var dep = new CacheDependency();
        dependencies.ForEach(o => dep.SomeHowAdd(o));

        HttpRuntime.Cache.Add(
            itemDescriptor, 
            ret, 
            dependencies, 
            System.Web.Caching.Cache.NoAbsoluteExpiration, 
            System.Web.Caching.Cache.NoSlidingExpiration, 
            Caching.CacheItemPriority.Normal, 
            null
        );
    }
    return ret;
}

これで私を助けてください。

4

1 に答える 1

7

これができるとは知りませんでしたが、ここでCacheDependencyコンストラクターを見ると、2番目のパラメーターがキャッシュキーの配列であることがわかります。したがって、これらのキャッシュされたアイテムのいずれかが変更されると、依存関係全体が変更されます。また、依存アイテムも無効になります。

したがって、コードは次のようになります。

String[] cacheKeys = new string[]{"cacheKey1","cacheKey2"};
var dep = New CacheDependency("", cacheKeys);

HttpRuntime.Cache.Add(itemDescriptor, ret, dep ...);
于 2011-10-03T07:57:12.043 に答える