Umbraco获取所有缓存项目

时间:2017-01-07 03:42:45

标签: caching umbraco

我正在使用Umbraco.Core.Cache;

进行Umbraco缓存

使用这行代码获取缓存项目没有问题

ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem(

给出正确的缓存键项。

现在我的问题是:

如果忘记缓存关键项怎么办?有什么方法可以窥视所有缓存项目?或者出于调试目的,我只想看到所有这些? 我追踪了所有可能的intellisense建议,但似乎没有“GetAllCacheItem”可用

enter image description here

任何人请赐教我有可能吗?

1 个答案:

答案 0 :(得分:0)

编写代码时,如果使用常量(如下所示),则只能对缓存键进行智能感知,但缺点是在添加新缓存项时必须保持常量值。

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

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

调试时,您可以按如下方式查看缓存键;引擎盖IRuntimeCacheProviderApplicationContext.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的钥匙。