1

次のコードを使用して、EPiServerのCacheManagerクラスを使用してオブジェクトをキャッシュしています。

CacheManager.RuntimeCacheAdd(
                cacheKey, 
                myPageCollection,
                DataFactoryCache.CreateDependency(new PageReference(15)));

何らかの理由で、LastModified値が変更されていない(実際にはDateTime.UtcNowより前である)にもかかわらず、返されるCacheDependencyオブジェクトはHasChanged==trueになっています。

つまり、依存関係によってキャッシュが即座にクリアされるため(HasChanged == trueのため)、キャッシュされたオブジェクトが固定されることはありません。

どんな提案でも大歓迎です!:)

4

1 に答える 1

2

これは「なぜ」に対する完全な答えではありませんが、私が見ることができるのは次のとおりです。

特定のページの CacheDependency を作成すると、そのページのが取得される (キャッシュされる) まで、その CacheDependency は HasChanged==true になります。

したがって、私の CacheDependency が適切に初期化されるようにするには、次のようにする必要があります。

var cacheDependency = DataFactoryCache.CreateDependency(new PageReference(15)); // cacheDependency.HasChanged==true;             

これに:

var children = DataFactory.Instance.GetChildren(new PageReference(15));

var cacheDependency = DataFactoryCache.CreateDependency(new PageReference(15)); // cacheDependency.HasChanged==false;
于 2010-07-21T14:54:36.997 に答える