EPiServer中的DataFactoryCache.CreateDependency返回CacheDependency,HasChanged == true

时间:2010-07-21 14:20:40

标签: episerver

我正在使用以下代码使用EPiServer中的CacheManager类缓存对象:

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

由于某种原因,返回的CacheDependency对象具有HasChanged == true,即使LastModified值没有改变(并且确实在DateTime.UtcNow之前)。

换句话说,我的缓存对象永远不会坚持,因为依赖项会立即清除缓存(因为HasChanged == true)。

非常感谢任何建议! :)

1 个答案:

答案 0 :(得分:2)

这不是“为什么”的完全答案,但这是我能看到的:

当您为特定页面创建CacheDependency时,该CacheDependency将具有HasChanged == true,直到检索到页面的 children (并因此被缓存)。

因此,为了确保我的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;