许多人利用session变量来开发asp(active server pages)。这些变量与任何编程语言中通用的变量非常相似,并且具有和通用变量一样的优点和缺陷。任何命令都需要运行时间和存储空间(甚至goto’s语句如此),session变量同样需要自己的运行时间和存储空间。过多地使用session变量就会导致无法代码冗余,并且使服务器运行成本提高下面是我个人使用session变量的一些主要观点和心得体会。
优点
如果要在诸多web页间传递一个变量,那么用session变量要比通过querystring传递变量可使问题简化。
要使web站点具有用户化,可以考虑使用session变量。你的站点的每位访问者都有用户化的经验,基于此,随着ldap和诸如ms site server等的使用,已不必再将所有用户化过程置入session变量了,而这个用户化是取决于用户喜好的。
你可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在vb中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放。
缺点
session变量和cookies是同一类型的。如果某用户将浏览器设置为不兼容任何cookie,那么该用户就无法使用这个session变量!
当一个用户访问某页面时,每个session变量的运行环境便自动生成,这些session变量可在用户离开该页面后仍保留20分钟!(事实上,这些变量一直可保留至“timeout”。“timeout”的时间长短由web服务器管理员设定。一些站点上的变量仅维持了3分钟,一些则为10分钟,还有一些则保留至默认值20分钟。)所以,如果在session中置入了较大的对象(如ado recordsets,connections, 等等),那就有麻烦了!随着站点访问量的增大,服务器将会因此而无法正常运行!
因为创建session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。
虽然“你可以在任何想要使用的时候直接使用session变量,而不必事先声明它,这种方式接近于在vb中变量的使用。使用完毕后,也不必考虑将其释放,因为它将自动释放”。但是,“谁”想到那儿呢?变量的含义是什么?这些都变得不很清晰。
总结
使用session变量既有优点,又有缺点。就我个人的观点,最好少用,但在某些地方使用它们确实能使web开发大大地简化。是否使用session变量完全取决于个人的需要,无论使用与否,都要事先考虑其优缺点。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器