代码之家  ›  专栏  ›  技术社区  ›  Curtis White

CachingCallHandler无法使缓存对象无效?

  •  0
  • Curtis White  · 技术社区  · 15 年前

    在实现我自己的无效化方法之前,我想验证一下不存在我不知道的无效化机制?

    更新:

    看起来这不是内置的。但是,我认为它使用gethashcode作为密钥。我可能因此可以删除无效的关键。

    我仍在试图弄明白为什么有人会想要。当然,如果可以将过期时间与数据库或更新为无效的文件联系起来,那么这可能是理想的。然而,如果没有这种先进的缓存失效机制,这似乎毫无意义。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Randy Levy    14 年前

    那个人想要缓存一个项目 永远

    不幸的是 CachingCallHandler 仅使用滑动过期:

    下面是它在代码中的作用:

    private void AddToCache(string key, object value)
    {
        object[] cacheValue = new object[] { value };
        HttpRuntime.Cache.Insert(
            key,
            cacheValue,
            null,                      // No Cache Dependencies
            Cache.NoAbsoluteExpiration,
            expirationTime,            // Sliding expiration (default 5 minutes)
            CacheItemPriority.Normal, 
            null                       // No CacheItemRemovedCallback
        );
    }
    

    至于这种方法的意义是什么,似乎确实有点有限。但是,它确实解决了这样一种情况,即您有相当静态的数据,不需要按需刷新。

    请注意,由于“不可解析的安全漏洞”,CachingCallHandler已从Enterprise Library 5.0中删除,因此您可能不想使用此功能。

    推荐文章