二、会话管理解决方案:
由于网络已经给企业销售诸多商品和服务,当访问他们的网站时,企业一直致力于为用户预计更好的体验。确保企业能够继续在网络上取得成功的关键因素就是更高的客户满意度和品牌忠诚度,从而确保不发生类似潜在的客户突然成为竞争对手网站上的客户那样令人沮丧的情况。因为当浏览页面时,所有购物车里的产品丢失将会影响bottom-line(底线)。一个有效的session管理策略应该是每个企业在线策略的一组成部分。当设计一个session管理架构时,对研究这些sessions将如何以一种开放、可靠和高性能方式来进行访问才是有意义的。
Session管理的一个摆在首要的技术原因就是它自身的HTTP协议。这个协议用于在浏览器和网络服务器间的通信,它是无状态的。‘无状态’意味着HTTP协议并不保存任何有关从Web服务器中用户请求哪些网页的信息或一些交互/事务。而我们所说的会话就是用户访问Web服务器期间存放在Web服务器上的所有与用户访问状态有关的信息。许多传统的数据库应用使用sessions来帮助控制用户交互,而一些其他的应用使用session是来降低服务器端的处理和资源消耗情况的。
浏览器 VS 服务器端的解决方案
当在处理一个请求时,应用程序通常需要使用另一个请求的结果。例如,请求添加一列,当在一个虚拟书店里浏览时把一本书放到购物车里,需要记住的就是当在checkout时知道什么时候创建了一个预订请求。换言之,在HTTP请求时需要存储应用的状态。有两个常见的方式来实现这一点:通过cookies在浏览器里存储定义会话状态的变量,和包括每个请求,或使用cookie在服务器上存储这些变量。(网络,应用程序或数据库级)
Cookies是一种很好的解决方案,如果在浏览器和服务器的请求间,应用程序并不需要保存大或复杂的数据集。但是也有一些限制。 例如,浏览器可以限制他们从任何域存储来的Cookie数量,甚至限制其大小。就像每台用户计算机一般只允许存放300个Cookie,同一个Web服务器只能发送20个Cookie等。而有关Cookie的隐私和安全也将影响到您的会话管理策略,特别是他们通过终端用户在浏览器里禁用它。
另一个常见的方式就是在服务器端存储和管理session(web,应用程序,数据库)。使用服务器端的会话管理,得记住会话变量和为每个会话存储的数据。随着流量的增长, 所以在服务器端支持session。另外加上数据的大小和复杂度,将使得扩展性和性能问题很有可能就会快速加升。
另一个考虑就是对于session数据得存储多久的安全问题,由于HTTP的无状态性,用户什么时候完成一个session和它不在网站上就不知道。一些交互可能需要用户去登录、使用注销、对一个旧的会话数据进行删除。然而,这往往是不实际可行的。在没有删除这些session时有一个风险,不仅是由于在服务器上消耗的资源,而且是那些旧的session可能需要知道什么是’session-hijacking(会话劫机)。在删除这些旧session状态前,超时多久得依赖应用和企业的需求。