日期:2014-05-18  浏览次数:20521 次

请教关于在asp.net站点中使用静态变量的问题
我的程序中的某一个功能需要大量结构化的数据,这批数据是根据数据库和配置文件中的信息组合生成的。数据库中的那部分数据非常稳定,很少会变动;配置文件偶尔会修改。换句话说,这批数据的生成很费时间,但一旦生成基本上就不需要改动(除非我修改配置文件,那种情形下我会重起站点)。所以我把这个数据用一个静态变量来表示,它的初始化过程封装在一个Reader类的静态构造器里,然后通过一些静态方法来访问这个静态变量。

我的问题是:
1.类似我这样的问题,使用静态变量来处理是否合适?
2.使用我这样的处理方法,是不是只要站点不重起,这个数据的初始化过程只需要一遍?(听说当IIS占用内存过多的时候,有些静态变量会被回收掉,不知哪位达人可以明确解释一下,只要这个回收的频率不会太高,就可以满足我的要求。)

------解决方案--------------------
举例,这样写:

public static yourDataType[] yourDatas
{
get{
yourDataType[] ds;
if(Cache[ "yourDatas "]==null)
{
ds= 读取数据库操作返回你的数据();
AggregateCacheDependency cd=new AggregateCacheDependency();
cd.Add(数据库依赖);
cd.Add(配置文件依赖);
Cache.Insert( "yourDatas ",ds,cd);
}
else
ds=(yourDataType[])Cache[ "yourDatas "];
return ds;
}
------解决方案--------------------
基本不改变的使用 static,如站点配置信息

经常刷新的,使用 cache