ASP.NET 缓存添加与插入
Posted
技术标签:
【中文标题】ASP.NET 缓存添加与插入【英文标题】:ASP.NET cache add vs insert 【发布时间】:2011-09-23 01:11:09 【问题描述】:Cache.Add()
和 Cache.Insert()
方法有什么区别?
我应该在哪些情况下使用它们?
【问题讨论】:
【参考方案1】:Insert
将使用相同的 Key 覆盖现有的缓存值;如果存在具有相同键的现有缓存值,Add
将失败(不执行任何操作)。所以有一种情况说你应该总是使用 Insert 因为代码第一次运行它会将你的对象放入缓存中,当它随后运行时它会更新缓存的值。
【讨论】:
你觉得 Add 方法完全没用吗? @guchko-gleb 如果您对缓存的使用不应该在代码中的给定步骤遇到现有缓存值 - 那么来自添加的异常将是受欢迎的。 旁注:根据MSDN,如果项目已经存在,添加不会引发异常【参考方案2】:Cache.Add()
在添加后还会从Cache
返回一个缓存对象:
string cachedItem = Cache.Add("cachedItem", ....);
【讨论】:
添加返回缓存中的现有值:如果您要添加新项目,则返回null。如果您尝试覆盖现有值,则不会发生任何事情并返回缓存中的值。【参考方案3】:您可以使用Cache.Add()
或Cache.Insert()
方法来缓存您的数据。两者之间的唯一区别是,Cache.Add()
方法返回要缓存的对象。
因此,假设您要使用该对象并将其缓存。在Cache.Add()
的帮助下,您可以在一行代码中完成。
Cache.Insert()
方法有 4 种不同类型的重载方法,而 Cache.Add()
只有一种。
【讨论】:
今天浪费了很多时间,因为 Cache.Add 不会覆盖缓存中已经存在的值,也不会抛出异常。 @steve 有一个非常重要的观点。来自MSDN(强调我的):...如果您使用Add
方法并且缓存中已经存在同名的项目,则该方法不会替换该项目并且不会引发异常。
添加返回缓存中的现有值:如果您要添加新项目,则返回null。如果您尝试覆盖现有值,则不会发生任何事情并返回缓存中的值。以上是关于ASP.NET 缓存添加与插入的主要内容,如果未能解决你的问题,请参考以下文章