private CacheValues GetCacheValues(PropertyCacheLevel cacheLevel) { CacheValues cacheValues; switch (cacheLevel) { case PropertyCacheLevel.None: // never cache anything cacheValues = new CacheValues(); break; case PropertyCacheLevel.Element: // cache within the property object itself, ie within the content object cacheValues = _cacheValues ?? (_cacheValues = new CacheValues()); break; case PropertyCacheLevel.Elements: // cache within the elements cache, depending... var snapshotCache = GetSnapshotCache(); cacheValues = (CacheValues?)snapshotCache?.Get(ValuesCacheKey, () => new CacheValues()) ?? new CacheValues(); break; case PropertyCacheLevel.Snapshot: var publishedSnapshot = _publishedSnapshotAccessor?.GetRequiredPublishedSnapshot(); // cache within the snapshot cache var facadeCache = publishedSnapshot?.SnapshotCache; cacheValues = (CacheValues?)facadeCache?.Get(ValuesCacheKey, () => new CacheValues()) ?? new CacheValues(); break; default: throw new InvalidOperationException("Invalid cache level."); } return(cacheValues); }
internal IPublishedContent CreateFromCacheValues(CacheValues cacheValues) { var content = new DictionaryPublishedContent( cacheValues.Values, parentId => parentId < 0 ? null : GetUmbracoMedia(parentId), GetChildrenMedia, GetProperty, cacheValues.XPath, // though, outside of tests, that should be null cacheValues.FromExamine ); return(content.CreateModel()); }
internal IPublishedContent CreateFromCacheValues(CacheValues cacheValues) { var content = new DictionaryPublishedContent( cacheValues.Values, parentId => parentId < 0 ? null : GetUmbracoMedia(parentId), GetChildrenMedia, GetProperty, _appCache, _variationContextAccessor, _contentTypeCache, cacheValues.XPath, // though, outside of tests, that should be null cacheValues.FromExamine ); return(content.CreateModel(Current.PublishedModelFactory)); }
private CacheValues GetCacheValues(PropertyCacheLevel cacheLevel) { CacheValues cacheValues; IPublishedSnapshot publishedSnapshot; IAppCache cache; switch (cacheLevel) { case PropertyCacheLevel.None: // never cache anything cacheValues = new CacheValues(); break; case PropertyCacheLevel.Element: // cache within the property object itself, ie within the content object cacheValues = _cacheValues ?? (_cacheValues = new CacheValues()); break; case PropertyCacheLevel.Elements: // cache within the elements cache, unless previewing, then use the snapshot or // elements cache (if we don't want to pollute the elements cache with short-lived // data) depending on settings // for members, always cache in the snapshot cache - never pollute elements cache publishedSnapshot = _publishedSnapshotAccessor.GetRequiredPublishedSnapshot(); cache = publishedSnapshot == null ? null : ((_isPreviewing == false || PublishedSnapshotService.FullCacheWhenPreviewing) && (_isMember == false) ? publishedSnapshot.ElementsCache : publishedSnapshot.SnapshotCache); cacheValues = GetCacheValues(cache); break; case PropertyCacheLevel.Snapshot: // cache within the snapshot cache publishedSnapshot = _publishedSnapshotAccessor.GetRequiredPublishedSnapshot(); cache = publishedSnapshot?.SnapshotCache; cacheValues = GetCacheValues(cache); break; default: throw new InvalidOperationException("Invalid cache level."); } return(cacheValues); }
public CachedTypeFinder(ICache cache, string fieldName, ITypeFinder typeFinder) { _cacheValues = new CacheValues<IEnumerable<Type>>(cache, fieldName); _typeFinder = typeFinder; }
public CachedTypeFinder(ICache cache, string fieldName, ITypeFinder typeFinder) { _cacheValues = new CacheValues <IEnumerable <Type> >(cache, fieldName); _typeFinder = typeFinder; }