2017-01-07 6 views
0

Я использую кэширование Umbraco с помощью Umbraco.Core.Cache;Umbraco получить все элементы кэша

я не имею проблем получения элемента кэша с помощью этой строки кода

ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem(

данного ключа пункта правильного кэша.

Теперь мой вопрос:

Что делать, если я забыл ключ элемент кэша? есть ли способ, который я могу заглянуть для всего элемента кэша? Или для цели отладки я просто хочу их всех увидеть? я проследил все возможные INTELLISENSE предложения, но, кажется, нет «GetAllCacheItem» доступного

enter image description here

Любого пожалуйста, просветите меня это возможно?

ответ

0

При написании кода вы можете получить intellisense только в кеш-ключах, если используете константы (например, ниже), но недостаток должен поддерживать постоянные значения при добавлении новых элементов кэша.

ApplicationContext.ApplicationCache.RuntimeCache.GetCacheItem(CacheKeys.SAMPLE_KEY) 

public class CacheKeys 
{ 
    public const string SAMPLE_KEY = "some-example-key"; 
} 

Во время отладки вы можете просматривать ключи кеша следующим образом; под капотом IRuntimeCacheProvider (ApplicationContext.ApplicationCache.RuntimeCache) использует HttpRuntime кэш так, хотя вы не можете перебирать элементы кэша в RuntimeCache собственности непосредственно вы можете использовать HttpRuntime.Cache как:

var keys = new StringBuilder(); 
foreach (DictionaryEntry cacheItem in HttpRuntime.Cache) 
{ 
    keys.AppendLine(cacheItem.Key.ToString()); 
} 

Элементы добавляются в кэш во время выполнения с помощью поставщика Umbraco содержит префикс «umbrtmche-» так что вы можете отфильтровать результаты:

HttpRuntime.Cache.Cast<DictionaryEntry>() 
    .Where(x => x.Key.ToString().StartsWith("umbrtmche")) 
    .Select(x => x.Key.ToString().Replace("umbrtmche-", "")) 
    .ToList(); 

И последнее, что следует отметить, что Umbraco использует кэшированные себя так, вы не только увидите ключи кэша вы добавили, если вы хотите фильтровать я предлагаю добавить префикс вашего чтобы вы могли отфильтровать собственные кеш-ключи от Umbraco's.