Cache.Insert是否覆盖了之前的AbsoluteExpiration?

时间:2010-06-27 15:36:49

标签: asp.net caching

如果我的ASP.NET Cache中已存在某个项目...我只希望更新该缓存项目的值而不是Absolute Expiry值,或Cache Dependencies等等。没有其他但是价值......我可以使用Cache.Insert吗?

如果没有,无论如何我是否可以检索缓存项的所有值...然后在我Cache.Insert时重新使用它们?

干杯:)

2 个答案:

答案 0 :(得分:1)

您可以创建函数来处理添加新值或更新现有值,如下所示:

private static Cache cachingControl;

public void UpdateToCache(object key, object updateValue)
{
    try
    {
        if (key != null)
        {
            cachingControl.Remove(key);
            AddToCache(key, updateValue);
        }
    }
    catch (Exception ex)
    {
        //**ToDo[Logging]** Code for logging
    }
}

public void AddToCache(object key, object saveValue)
{
    try
    {
        if (key != null)
        {
            cachingControl.Insert(key, saveValue,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromMinutes(30));
        }
    }
    catch (Exception ex)
    {
        //**ToDo[Logging]** Code for logging
    }
}

在这里,您可以使用AddToCache函数插入新值和UpdateToCache函数来更新现有密钥的新值。(这主要涉及删除现有密钥并使用更新的值再次添加它。)

没有直接的方法来更新现有值。

答案 1 :(得分:0)

只占用密钥和对象的Cache.Insert重载只会使用默认值来缓存行为。

来自MSDN

  

使用缓存键将项目插入Cache对象,以使用CacheItemPriority枚举提供的默认值来引用其位置。

您最好创建自己的助手类来为您存储值,因为我认为没有办法获得缓存项目的行为属性。