使用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;
}
}
答案 0 :(得分:5)
HttpRuntime.Cache
中的对象具有未知的到期时间,除非明确设置(意味着对象可以在任何时间到期),而HashTable
中的对象作为您的应用程序池生存(除非您手动删除条目)。 HttpRuntime.Cache
还允许您设置各种其他特征,例如(可选)缓存项目优先级和到期时间。
答案 1 :(得分:0)
使用缓存可以轻松设置有效期的结束日期;缓存对象自动使内容过期。
也可以为缓存赋予优先级,不太重要的项目可以被赋予低优先级,因此当服务器获得高负载时,首先删除该项目
但是你总是需要在单元测试中做一些额外的工作,因为在单元测试期间httpcontext不可用。
答案 2 :(得分:0)
HttpRuntime.Cache允许您指定过期回调,但是使用静态字典,您将不得不等待查询运行缓存项目的过期循环。