【问题标题】:ASP.NET cache add vs insertASP.NET 缓存添加与插入
【发布时间】:2011-09-23 01:11:09
【问题描述】:

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

我应该在哪些情况下使用它们?

【问题讨论】:

    标签: asp.net caching


    【解决方案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。如果您尝试覆盖现有值,则不会发生任何事情并返回缓存中的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多