我正在使用Umbraco.Core.Cache;
使用这行代码获取缓存项目没有问题
ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem(
给出正确的缓存键项。
现在我的问题是:
如果忘记缓存关键项怎么办?有什么方法可以窥视所有缓存项目?或者出于调试目的,我只想看到所有这些? 我追踪了所有可能的intellisense建议,但似乎没有“GetAllCacheItem”可用
任何人请赐教我有可能吗?
答案 0 :(得分:0)
编写代码时,如果使用常量(如下所示),则只能对缓存键进行智能感知,但缺点是在添加新缓存项时必须保持常量值。
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的钥匙。