【问题标题】:Umbraco get all cache itemsUmbraco 获取所有缓存项
【发布时间】:2017-01-30 20:26:45
【问题描述】:

我正在使用 Umbraco 缓存,使用 Umbraco.Core.Cache;

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

ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem(

给定正确的缓存键项。

现在我的问题是:

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

哪位大神指点一下,可以吗?

【问题讨论】:

    标签: caching umbraco


    【解决方案1】:

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

    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 的钥匙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2015-09-03
      • 2018-06-13
      • 2018-10-26
      • 2017-07-10
      相关资源
      最近更新 更多