后台数据缓存的一点心得
最近在实际使用中发现,当IIS应用程序池自动回收后,此时访问页面,会提示 “未将对象引用设置到对象的实例”的错误,查看代码发现,使用了类中的静态变量。
public static List = new List();
单看这个问题不大,因为此变量在类中,应用程序池回收后,因为类本身不是static,且不能变为static,所以要加以改造。
使用类单例模式,就可以比较好的解决这一问题。
因为类单例模式,在运行时实例唯一,这是做缓存的根本。
public class EMPDataInterfaceDataCacheO : EMPDataCacheO
{
///
/// 数据接口中缓存类
///
public class ListData : CacheListData { }
///
/// 超时时间,3分钟
///
private const int OverTime = 3;
///
/// 缓存列表
///
private List cacheList;
///
/// EMPDataInterfaceDataCache 实例
///
private static EMPDataInterfaceDataCacheO cache;
///
/// 获得缓存实例
///
/// 实例
public static EMPDataInterfaceDataCacheO GetInstance()
{
if (cache == null)
{
cache = new EMPDataInterfaceDataCacheO();
}
return cache;
}
private EMPDataInterfaceDataCacheO()
{
cacheList = new List();
}
}
以上是部分代码,类中实现了,缓存数据的存取,过期的自动清理等。