ASP.NET缓存添加与插入


72

Cache.Add()Cache.Insert()方法之间有什么区别?

在哪种情况下我应该使用每一个?

Answers:


99

Insert将使用相同的Key覆盖现有的缓存值;Add如果存在具有相同键的缓存值,则失败(不执行任何操作)。因此,有一种说法是您应该始终使用插入,因为代码第一次运行时,它将把您的对象放到缓存中,而当代码随后运行时,它将更新缓存的值。


6
您认为添加方法完全没有用吗?
guchko-gleb 2011年

2
@ guchko-gleb如果您对Cache的使用在代码的给定步骤中永远不会遇到现有的缓存值,那么将欢迎Add的Exception。
克里斯·莫斯基尼

10
旁注:如果根据MSDN
Michael McGuire

4

Cache.Add()还从Cache添加对象后返回缓存的对象:

string cachedItem = Cache.Add("cachedItem", ....);

7
Add返回缓存中的现有值:如果要添加新项目,则返回null。如果尝试覆盖现有值,则什么也不会发生,并且将返回高速缓存中的值。
马克·索沃

-1

您可以使用Cache.Add()Cache.Insert()方法来缓存数据。两者之间的唯一区别是,Cache.Add()method返回要缓存的对象。因此,假设您要使用对象并对其进行缓存。您可以在的帮助下,在一行代码中执行此操作Cache.Add()

Cache.Insert()方法有4种不同类型的重载方法,而Cache.Add()只有一种。


17
我今天浪费了很多时间,因为Cache.Add不会覆盖缓存中已经存在的值,并且不会引发异常。
史蒂夫

9
@steve有一个非常重要的观点。从MSDN(重点是我的):...如果您使用该Add方法,并且缓存中已经存在具有相同名称的项目,则该方法将不会替换该项目,也不会引发异常。
迈克尔

1
Add返回缓存中的现有值:如果要添加新项目,则返回null。如果尝试覆盖现有值,则什么也不会发生,并且将返回高速缓存中的值。
马克·索沃
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.