1 Cache["key"] = value
равно Cache.Insert("key", value)
MSDN Cache.Insert - метод (String, Object):
Этот метод перезапишет существующий
элемент кэша, ключ которого совпадает с ключом
параметр. Объект добавлен в
кеш, используя эту перегрузку
Вставить метод вставляется без файла
или кэш-зависимостей, приоритет
По умолчанию скользящее значение срока действия
NoSlidingExpiration и абсолют
срок действия
NoAbsoluteExpiration.
2 Лучше удалять значения из кэша с помощью Cache.Remove («ключ»).
Если вы используете Cache["key"] = null
, это равно Cache.Insert("key", null)
.
Взгляните на реализацию Cache.Insert
:
public void Insert(string key, object value)
{
this._cacheInternal.DoInsert(true, key, value, null, NoAbsoluteExpiration, NoSlidingExpiration, CacheItemPriority.Normal, null, true);
}
и CacheInternal.DoInsert
:
internal object DoInsert(bool isPublic, string key, object value, CacheDependency dependencies, DateTime utcAbsoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback, bool replace)
{
using (dependencies)
{
object obj2;
CacheEntry cacheKey = new CacheEntry(key, value, dependencies, onRemoveCallback, utcAbsoluteExpiration, slidingExpiration, priority, isPublic);
cacheKey = this.UpdateCache(cacheKey, cacheKey, replace, CacheItemRemovedReason.Removed, out obj2);
if (cacheKey != null)
{
return cacheKey.Value;
}
return null;
}
}
Сравните это с Cache.Remove
:
public object Remove(string key)
{
CacheKey cacheKey = new CacheKey(key, true);
return this._cacheInternal.DoRemove(cacheKey, CacheItemRemovedReason.Removed);
}
CacheInternal.DoRemove
internal object DoRemove(CacheKey cacheKey, CacheItemRemovedReason reason)
{
object obj2;
this.UpdateCache(cacheKey, null, true, reason, out obj2);
return obj2;
}
И, наконец, Cache.Remove("key")
гораздо лучше читается, чем Cache["key"] = null