8

使用 HttpRuntime Cache 反对使用简单的静态字段的主要优点缺点是什么?

我需要将数据存储在整个 ASP.NET 应用程序的范围内。

HttpRuntime.Cache["MyData"] = someHashtable;

对比

private static System.Collections.Hashtable _myData;
public static System.Collections.Hashtable MyData
{
    get
    {
        if (_myData == null)
        {
            _myData = new System.Collections.Hashtable();
            // TODO: Load data
        }
        return _myData;
    }
}
4

3 回答 3

5

HttpRuntime.Cache除非明确设置(意味着对象可以随时到期),否则其中的对象具有未知的到期期限,而HashTable您的应用程序池中的对象是活跃的(除非您手动删除条目)。还允许您设置各种其他特性,HttpRuntime.Cache例如(可选)缓存项优先级和到期时间。

于 2011-08-03T07:21:13.473 回答
0

使用缓存,您可以轻松地设置有效期的结束日期;缓存对象自动使内容过期。

缓存也可以被赋予优先级,不太重要的项目可以被赋予低优先级,因此当服务器负载高时,该项目首先被删除

但是,使用 cahce,您总是必须在单元测试中做一些额外的工作,因为在单元测试期间 httpcontext 不可用。

于 2011-08-03T07:20:43.590 回答
0

HttpRuntime.Cache 允许您指定过期回调,但使用静态字典,您将不得不等待查询运行缓存项的过期循环。

于 2012-08-10T21:08:28.570 回答