主题:  Session/Cookie/ViewState/Cache

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#12005/2/6 11:40:08
本帖专题讨论Session,Cookie,ViewState,Cache
这些用法有时很糊涂,不知什么时候用什么才好,所以想提出来专题讨论一下。


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#22005/2/6 11:56:26
第一个问题:

有些自定义的类,用ViewState来暂存,会出现这类问题,该类无法串行化,也无法用视图来存储。
但有些类要调用数据库的好多查询,并且要经过复杂的运算才能实现,如果没次调用,都实例化一下,对系统的开销会比较大,所以想存储在一个暂时地方,这样以后调用就不需要实例化了。

但用什么方法来存储,Session只能是字符串,开始想用public static来存储,但不知道这static变量存储会有什么后遗症,并且如果页面消失,这static变量是否还会继续存在。

后来用Cache来存储,比如存储一个树形结构:

TreeList tree;
HttpContext context = HttpContext.Current;

if (context.Cache["MyTreeList"] == null}
{
    object data = new object;    // 伪代码,泛指某类型
    tree = new TreeList();
    tree.ResetTree(data);
    context.Cache["MyTreeList"] = tree;
}
else
{
    tree = (TreeList)context.Cache["MyTreeList"];
}


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#32005/2/6 11:58:46
以上是我的解决办法,并不成熟,所以大家一起讨论。


非常大鱼