ASP.NET Web – 状态管理
2020-12-07 07:50
标签:style width string cti 服务器 管理 工作 不同的 .net table new 客户端的状态管理 -ViewState Web服务器控件自动使用ViewState来使事件工作。ViewState包含的状态与控件发送给客户端时包含的状态相同。当浏览器把窗体发送回服务器时,ViewState包含了初始值,但所发送的控件包含新值。如果初始值和新值有区别,就调用相应的事件处理程序。 缺点:数据总是要从服务器传送给客户端,再从客户端传送给服务器,增加了网络流量。在Page指令中把EnableViewState属性设置为false,就可以关闭页面中有控件的ViewState。 还可以把定制的数据存储在ViewState中。为此可以使用索引符和Page类的ViewState属性。ViewState[“mydata”] = “my
data”; 优点:每个浏览器都可以使用这个特性,用户不能关闭它。 ViewState只保存在页面中。如果状态应保存在多个不同的页面中,就应使用cookie在客户端保存状态。 -cookies 在HTTP头中定义。使用HttpResponse类可以把cookie发送给客户端。Response是Page类的一个属性,它返回一个HttpResponse类型的对象。此类定义了返回HttpCookieCollection的Cookies属性。使用HttpCookieCollection可以向客户端返回多个cookie。 以下代码说明了如何把cookie发送给客户端 string myval = “myval”; HttpCookie cookie = new HttpCookie(“mycookie”) cookie.Values.Add(“mystate”, myval) Response.Cookies.Add(cookie) cookie可以是临时的,仅在一个浏览器会话中有效,也可以存储在客户端的磁盘上。为了使cookie变成永久的,必须使用HttpCookie对象设置成Expires属性。 Var cookie = new HttpCookie(“mycookie”) cookie.Values.Add(“mystate”,“myval”) cookie.Expires = DateTime.Now.AddMonths(3) Response.Cookies.Add(cookie) 浏览器只能给一个服务器存储20个cookie,给所有服务器存储300个cookie。存储的数据不能超过4K. 服务器端状态管理 -会话 会话状态与浏览器相关,客户在服务器第一次打开ASP.NET页面时,会话就开始了。当客户在20分钟内美欧访问服务器时,会话结束。 会话状态可以存储在HttpSessionState对象中。可以使用Page类的Session属性来访问与当前HTTP上下文相关的会话状态对象。 -应用程序 如果应在多个客户端之间共享数据,就可以使用应用程序状态。使用HttpApplicationState类。在改变应用程序变量之前,必须用Lock()方法锁定应用程序对象。否则就会出现线程问题,因为多个客户可以同时访问一个应用程序变量。 不要在应用程序状态中存储太多的数据,因为应用程序状态需要占用服务器资源,直到服务器停止或重新启动之后,才会释放这些资源。 -缓存 缓存是服务器状态,它类似于应用程序状态,因为它在所有客户端上共享。缓存比应用程序状态灵活,可以通过多种方式来定义状态的失效时间。对于缓存,需要使用System.Web.Caching名称空间和Cache类。 ASP.NET Web – 状态管理,搜素材,soscw.com ASP.NET Web – 状态管理 标签:style width string cti 服务器 管理 工作 不同的 .net table new 原文地址:http://www.cnblogs.com/lilideng/p/3701862.html
状态类型
客户端或服务器资源
有效时间
ViewState
客户端
只在一个页面中
Cookie
客户端
关闭浏览器时会删除临时cookie,永久cookie存储在客户系统的磁盘上
Session
服务器
会话状态与浏览器相关。会话在超时(默认为20分钟)后变得无效
Application
服务器
在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的
Cache
服务器
类似于应用程序状态,缓存是共享的。但是,使缓存无效有更好的控制方式