HttpRuntime Cache与静态字典/字段

时间:2011-08-03 07:01:13

标签: c# asp.net caching httpruntime

使用HttpRuntime Cache对使用简单的静态字段有哪些主要专业人士缺点

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

HttpRuntime.Cache["MyData"] = someHashtable;

VS

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;
    }
}

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

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

但是你总是需要在单元测试中做一些额外的工作,因为在单元测试期间httpcontext不可用。

答案 2 :(得分:0)

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