Umbraco 获取所有缓存项

Umbraco get all cache items

我正在使用 Umbraco.Core.Cache;

使用 Umbraco 缓存

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

ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem(

给定正确的缓存键项。

现在我的问题是:

如果我忘记了缓存键项怎么办?有什么办法可以查看所有缓存项吗?或者出于调试目的我只想查看所有这些? 我追踪了所有可能的智能感知建议,但似乎没有 "GetAllCacheItem" 可用

有没有大佬赐教啊?

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

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 的缓存键。