我正在使用以下代码使用EPiServer中的CacheManager类缓存对象:
CacheManager.RuntimeCacheAdd(
cacheKey,
myPageCollection,
DataFactoryCache.CreateDependency(new PageReference(15)));
由于某种原因,返回的CacheDependency对象具有HasChanged == true,即使LastModified值没有改变(并且确实在DateTime.UtcNow之前)。
换句话说,我的缓存对象永远不会坚持,因为依赖项会立即清除缓存(因为HasChanged == true)。
非常感谢任何建议! :)
答案 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;