成功开发 Web 应用程序的难题之一便是:当用户从应用程序中的一页转到另一页时,要维护整个访问或“会话”期间的用户信息。HTTP 是非状态协议,也就是说 Web 服务器将每个网页请求都当作独立的请求,服务器不保留以前请求的任何信息,即使它们只早于当前请求几秒钟。这种无法记忆先前请求的缺陷使得编写应用程序很困难,比如编写联机目录,应用程序可能要跟踪当用户在目录中不同页间跳转时所选的目录项目。 ASP 为管理会话信息问题提供了独特的解决方案。使用 ASP Session 对象和服务器生成的特定用户 ID,可以创建更聪明的应用程序,以便标识每次访问的用户并收集信息,应用程序随后就可以利用这些信息来跟踪用户喜好或选择。 要点 ASP 通过 HTTP cookie 指派用户 ID,cookie 是存储在用户浏览器中的小文件。因此,如果正在为不支持 cookie 的浏览器创建应用程序,或者如果用户浏览器设置为拒绝 cookie,则不要使用 ASP 的会话管理功能。
如果用户在指定时间间隔内没有请求或刷新应用程序中的网页,会话将自动结束。默认情况下该值为 20 分钟。可以通过设置 Internet 信息服务管理单元“应用程序选项”属性页中的会话超时。 该值的设置取决于 Web 应用程序的要求以及服务器的内存容量。例如,如果希望浏览 Web 应用程序的用户在每页上只停留几分钟,则可以使会话超时值远低于默认值。会话超时过长可能导致打开的会话太多,这将增加服务器内存资源的负担。 对于特定会话,如果要设置低于默认应用程序超时的超时间隔,也可以设置“Session”对象的“Timeout”属性。例如,下面脚本设置的超时间隔为 5 分钟。
<%For Each intQuote in Session.ContentsIf Session.Contents(intQuote) < 200 ThenSession.Contents.Remove(intQuote)End IfNext%>
管理多服务器的会话
ASP 会话信息存储于 Web 服务器。浏览器必须请求同一 Web 服务器的网页以便脚本访问会话信息。在 Web 服务器群集(由许多 Web 服务器共同响应用户请求)中,用户请求不会总是路由到同一服务器。相反,专用软件将对站点 URL 的请求分发到任一空闲的服务器,该进程称为“平衡加载”。平衡加载使得维护 Web 服务器群集上的会话信息十分困难。 要在平衡加载的站点上使用 ASP 会话管理,必须确保用户会话中的所有请求都发送到同一 Web 服务器。一种方法是编写 Session_OnStart 过程,该过程通过“Response”对象将浏览器重定向到运行用户会话的特定 Web 服务器。如果应用程序页中的链接都是相对链接,则未来请求都将路由到同一服务器。 例如,用户访问应用程序时可能请求站点的一般 URL:http://www.microsoft.com.加载平衡程序将请求路由到指定服务器,如 server3.microsoft.com。ASP 在该服务器上创建新会话。在“Session_OnStart”过程中,浏览器将重定向到指定的服务器:
cookie 是一种标记,由 Web 服务器嵌入用户浏览器中以便标识用户。下次同一浏览器请求网页时,将发送从 Web 服务器收到的 cookie。Cookie 允许一组信息与用户相关联。通过使用“Response”和“Request”对象中的 Cookies 集合,ASP 脚本可以获取和设置 cookie 值。
查看所有0条评论>>