繁体   English   中英

HttpRuntime缓存与静态字典/字段

[英]HttpRuntime Cache vs. static dictionary/fields

问:使用的httpRuntime缓存不要使用简单的静态领域的主要优点缺点

我需要将数据存储在整个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;
    }
}

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

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

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

还可以为缓存设置优先级,对次要的项目可以设置为低优先级,因此当服务器负载较高时,该项目将首先被删除

但是,使用cahce还是要在单元测试中花点功夫,因为在单元测试期间httpcontext不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM