昨天花了一些时间对ASP.NET状态进行了一些总结,希望大家帮忙补充或修正一下,感谢~~
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
ASP.NET页面状态 区别分析
一.Application Application 是 server 端的一个全局的状态变量,用于保存一些公用信息,而不能存储一些个人的信息了。在网站系统关闭时该状态结束。 Application保存的状态可供每个页面访问,状态存在与整个服务运行期,网站服务关闭时才消失。而Session常用来保存用户状态,在页面关闭时消失。
示例代码: "设置:
Application.Lock();
Application[""key""]=""value"";
Application.UnLock();
读取:
Response.Write(Application[""key""].ToString());"
二.Cache 类似于Application,也是server端的全局状态变量。Cache的使用可以大大的提高整个应用程序的效率。注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息 Cache它除了拥有 Application 的功能以外,还有些它自己的特性,自动更新和释放。所以Cache比Application 更具有灵活性。
示例代码: "设置:Cache[""key""]=""value"";或Catch.Insert(""key"",""value"");
读取:Response.Write(Cache[""key""]);"
三.Cookie "用于保存客户浏览器请求服务器页面的请求信息,其有效期可以人为设置,而且其存储的数据量很受限制,因此不要保存数据集及其他大量数据。而且Cookie以明文方式将数据信息保存在客户端的计算机中,因此最好不要保存敏感的未加密的数据。
注意:Cookie的清除可以在浏览器或者硬盘里手动清除,或者在程序里让Cookie实例过期" "Cookie保存的状态信息存在于用户硬盘中,不会像
Application和Cache在服务关闭时消失,更不会像Session那样在页面关闭时消失,只有过期或者用户清除Cookie相关文件时才会消失"
示例代码: "创建:Response.Cookies[""key""]=""value"";或HttpCookie myCookie = new HttpCookie(""key""); myCookie.Value=""value"";
读取:Response.Write(Request.Cookies[].Value) 或Response.Write(myCookie.Value);
删除:Response.Cookies[""key""].Expires=DateTime.Now.AddDays(-1);或Response.Cookies[""key""].Expires=DateTime.Now.AddDays(-1);myCookie[""key""].Expires=DateTime.Now.AddDays(-1);注意:也可以多键定义Cookie,例如:Response.Cookies[""key1""][""key2""] = ""value;
"
四.HiddenField Hidden控件属于Html类型的服务器控件,可以实现隐藏域的功能,他和其他的空间没什么区别只是不会在浏览器上显示,始终处于隐藏状态。 "HideenField作为隐藏的功能只能在自身页面保存信息,类似ViewState,不过只能保存string类型的数据类型。但是几乎被ViewState取代,
"
示例代码: "//存放信息
Hidden.Value=""value"";
//读取信息
String s=Hidden.Value;
"
五.QueryString QueryString是一种对URL的请求,比如通过链接到http://localhost/default.aspx?name=namevalue,可以将值namevalue传递给default.aspx页面 "Request.QueryString,就是在url后写变量值传给一
个网页,网页关闭这个变量也就结束"
示例代码: "传递:http://localhost/default.aspx?name=namevalue
读取:Response.Write(Request.QueryString[""name""]);"
六.Session 用于保存每个用户的专用信息。Session中的信息保存在Web服务器的内存中,保存的数据量可大可小。当Session超时或被关闭时将自动释放保存的数据信息。对于小量的数据Session对象保存还是一个不错的选择。 "类似于Application用法,但是范围没有其广泛,在页面关闭或者超时时失效
"
示例代码: "存放信息:Session[""key""]=""value"";
读取信息:Response.Write(Session[""key""].ToString())"
七.ViewState "ViewState常用于保存单个用户的状态信息,可以保存大量的数据但是过多使用会影响应用程序的性能。所有Web服务器控件都使用ViewStat在页面回发期间保存自 己的状态信息。每个控件都有自己的ViewState,不用时最好关闭以节省资源。通过给@Page指令添加""EnableViewState= false""属性可以禁止整个页面的ViewState。
注意:ViewState不能跨页面传值" 范围比较狭窄,只能在页面中保存状态