状态管理-机器人学导论第三版课后习题答案
18.8 状态管理
HTTP协议是无状态的。从客户端到服务器的连接可以在每个请求之后关闭。然而,一般需要把一些客户端信息从一个页面传送给另一个页面,这可以通过几种方式来实现。不同的状态管理方式的主要区别在于:状态是存储在客户端还是服务器上。表18-7简要列出了各种状态管理技术以及状态保持有效的时间。
| 表18-7 状态类型 | 客户端或服务器 | 资源 | 有效时间 |
| --- | --- | --- | --- |
| ViewState | 客户端 | 只在一个页面中 | - |
| Cookie | 客户端 | 关闭浏览器时会删除临时cookies,永久cookies存储在客户系统的磁盘上 | - |
| Session | 服务器 | 会话状态与浏览器会话相关。会话在超时(默认为20分钟)后变得无效 | - |
| Application | 服务器 | 在所有的客户端上共享应用程序状态,这个状态在服务器重新启动之前都是有效的 | - |
| Cache | 服务器 | 类似于应用程序状态,缓存是共享的。但是,使缓存无效有更好的控制方式 | - |
我们详细介绍这些技术。
18.8.1 客户端的状态管理
首先介绍客户端的状态管理:ViewState和cookies。
- ViewState
前面已讨论过在客户端存储状态的一种技术:ViewState。Web服务器控件自动使用ViewState来使事件工作。ViewState包含的状态与控件发送给客户端时包含的状态相同。当浏览器把窗体发送回服务器时,ViewState包含了初始值,但所发送的控件包含新值。如果初始值和新值有区别,就调用相应的事件处理程序。使用ViewState的缺点是,数据总是要从服务器传送给客户端,再从客户端传送给服务器,增加了网络流量。为了减少网络流量,可以关闭ViewState。在Page指令中把EnableViewState属性设置为false,就可以关闭页面中所有控件的ViewState。设置一个控件的EnableViewState属性,也可以配置该控件的ViewState【viewstate视图状态解码】。无论页面进行了什么。
- Cookies
Cookies是一种常见的状态管理方法。当用户访问网站时,服务器可以发送一个小的文件(即cookie)到用户的浏览器。这个文件会存储一些状态信息,比如用户ID、会话ID等。当用户再次访问该网站时,浏览器会将这个cookie发送回服务器,从而实现状态的保持。Cookies有两种类型:临时cookies和永久cookies。临时cookies会在浏览器关闭时删除,而永久cookies则存储在客户端的磁盘上【HTTP cookies详解】。你是否意识到这些小小的文件在你的浏览器里悄然工作,为你提供无缝的浏览体验?