如果我的ASP.NET Cache
中已存在某个项目...我只希望更新该缓存项目的值而不是Absolute Expiry
值,或Cache Dependencies
等等。没有其他但是价值......我可以使用Cache.Insert
吗?
如果没有,无论如何我是否可以检索缓存项的所有值...然后在我Cache.Insert
时重新使用它们?
干杯:)
答案 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枚举提供的默认值来引用其位置。
您最好创建自己的助手类来为您存储值,因为我认为没有办法获得缓存项目的行为属性。