DataFactoryCache.CreateDependency в EPiServer возвращает CacheDependency с HasChanged==true

Я использую следующий код для кэширования объекта с помощью класса CacheManager в EPiServer:

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

По какой-то причине возвращаемый объект CacheDependency имеет значение HasChanged==true, хотя значение LastModified не изменяется (и действительно предшествует DateTime.UtcNow).

Другими словами, мой кешированный объект никогда не прилипнет, так как зависимость мгновенно очищает кеш (из-за HasChanged==true).

Любые предложения очень ценятся! :)


person Ted Nyberg    schedule 21.07.2010    source источник


Ответы (1)


На самом деле это не полный ответ на вопрос «почему», но вот что я вижу:

Когда вы создаете 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;
person Ted Nyberg    schedule 21.07.2010