1

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

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

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

换句话说,我的缓存对象永远不会粘住,因为依赖项会立即清除缓存(因为 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 回答