如果我有一个项目已经存在于我的ASP.NET Cache
中...并且我只希望更新该缓存项目的值 ..而不是Absolute Expiry
值或Cache Dependencies
等..没有别的,但值.. 。我可以使用Cache.Insert
吗?Cache.Insert是否覆盖之前的AbsoluteExpiration?
如果没有,是否有反正我可以检索缓存项目的所有这些值..然后重新使用它们当我做Cache.Insert
?
干杯:)
如果我有一个项目已经存在于我的ASP.NET Cache
中...并且我只希望更新该缓存项目的值 ..而不是Absolute Expiry
值或Cache Dependencies
等..没有别的,但值.. 。我可以使用Cache.Insert
吗?Cache.Insert是否覆盖之前的AbsoluteExpiration?
如果没有,是否有反正我可以检索缓存项目的所有这些值..然后重新使用它们当我做Cache.Insert
?
干杯:)
的Cache.Insert
重载只需键和对象将只使用默认值缓存行为。
MSDN来自:
插入项与高速缓存键引用其位置,使用由CacheItemPriority枚举提供的默认值的高速缓存对象。
您最好创建自己的帮助器类来为您存储值,因为我不相信有一种方法可以获取缓存项的行为属性。
您可以创建函数来处理加入新鲜值或更新现有如下:
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功能更新的新值现有的密钥(这基本上涉及到删除现有的密钥,并用更新的值再次添加它。)
没有直接的方法来更新现有的值。
所以这是一个覆盖?我一直在想。 – 2010-06-28 00:26:59
是的,'Cache.Insert'只是覆盖'Cache'键。我不知道有什么办法来获取缓存属性,所以你的包装需要照顾。 – 2010-06-29 07:33:54