18.8状态管理
HTTP协议是无状态的。从客户端到服务器的连接可以在每个请求之后关闭。但是一般需要把一些客户端信息从一个页面传送给另一个页面。这可以通过几种方式来实现。在保存状态的各种方式中,主要区别是:状态是存储在客户端还是服务器上。表18-7中简要列出了各种状态管理技术以及状态保持有效的时间。
表18-7状态类型
-
客户端或服务器
-
资源有效时间
-
ViewState: 客户端, 只在一个页面中
-
Cookie: 客户端, 关闭浏览器时会删除临时cookies,永久cookies存储在客户系统的磁盘上。详细了解请点击HTTP cookies详解。
-
Session: 服务器, 会话状态与浏览器会话相关。会话在超时(默认为20分钟)后变得无效
-
Application: 服务器, 在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的
-
Cache: 服务器, 类似于应用程序状态,缓存是共享的。但是,使缓存无效有更好的控制方式
下面详细介绍这些技术。
18.8.1 客户端的状态管理
首先介绍客户端的状态管理:ViewState和cookies。
- ViewState
前面已讨论过在客户端存储状态的一种技术:ViewState。Web服务器控件自动使用ViewState来使事件工作。ViewState包含的状态与控件发送给客户端时包含的状态相同。当浏览器把窗体发送回服务器时,ViewState包含了初始值,但所发送的控件包含新值。如果初始值和新值有区别,就调用相应的事件处理程序。使用ViewState的缺点是,数据总是要从服务器传送给客户端,再从客户端传送给服务器,增加了网络流量。为了减少网络流量,可以关闭ViewState。在Page指令中把EnableViewState属性设置为false,就可以关闭页面中所有控件的ViewState。<%@ Page Language="C#" AutoEventWireUp="true" CodeFile="Default.aspx.cs" Inherits="Default" EnableViewState="false" %>设置一个控件的EnableViewState属性,也可以配置该控件的ViewState。更多关于ViewState的信息,您可以访问viewstate视图状态解码。
- Cookies
Cookie是另一种在客户端存储状态的方式。关闭浏览器时会删除临时cookies,而永久cookies则存储在客户系统的磁盘上。对于想深入了解HTTP cookies的读者,可以查看HTTP cookies详解。
暂无评论