Session优缺点

摘要:
当用户访问页面时,会自动生成每个会话变量的运行环境。这些会话变量可以在用户离开页面后保留20分钟!因为会话变量的创建是非常随意的,可以在任何时候调用,而不需要开发人员进行精确处理,所以过度使用会话变量将导致代码不可读和维护不佳。总结使用Session变量的优点和缺点。是否使用Session变量完全取决于个人需要。无论你是否使用它,你都应该事先考虑它的优点和缺点

许多人利用Session变量来开发ASP(Active Server 
Pages)/JSP。这些变量与任何编程语言中通用的变量非常相似,并且具有和通用变量一样的优点和缺陷。任何命令都需要运行时间和存储空间(甚至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变量完全取决于个人的需要,无论使用与否,都要事先考虑其优缺点

免责声明:文章转载自《Session优缺点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【干货】前端开发VUE实例ASP.NET MVC 设置区域默认定向下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

消息队列(三)Apache ActiveMQ

在Ubuntu上安装ActiveMQ 系统初始化 $ sudo apt update $ sudo apt dist-upgrade $ sudo apt autoremove $ sudo apt clean 搭建activemq服务 $ mkdir /home/active-mq $ cd /home/active-mq $ wget http://...

修改npm安装的全局路径和配置环境变量

我之前安装npm时全是默认安装,模块全部安装在C盘了,今天心血来潮,把路径改到了D盘,结果改完后模块都不能识别了,都提示XX模块不是内部命令,这其实是环境变量配置的问题,我都是按照网上的教程改的环境变量,但是照着改也有错,反复改了好几次都不行,最后终于改好了。步骤如下:  1.要在你需要存放模块的文件夹里建两个文件夹我是在node目录下建了两个文件夹分别叫...

Linux高级编程--04.GDB调试程序(查看数据)

查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。 下面是一些查看函数调用栈信息的GDB命令: backtrace / bt :打印当前的函数调用栈的所有信息。如: (gdb) bt #0...

sqlplus 汉字乱码问题的解决

从数据库中导一个数据的时候出现了一个很奇怪的问题,中文乱码。首先可以确认的一点,数据在数据库中是以中文存在的,还有就是用Toad进行连接查询的时候也是中文。但是在服务器端直接用sqlplus 连接查询之后,所有中文都显示为乱码。第一反应是字符集的问题,也尝试用修改字符集来解决问题,最终问题还是出在系统的环境变量上。 关于数据库字符集的问题,参考我的bl...

Oracle锁表查询和解锁方法

数据库操作语句的分类 DML:数据操纵语言,关键字:Insert、delete、update DCL:数据库控制语言 ,关键字:grant、remove DQL:数据库查询语言,关键字:select DDL:数据库模式定义语言,关键字:create oracle表在什么情况下会被锁住 DML锁又可以分为,行锁、表锁、死锁 行锁:当事务执行数据库插入、更...

分布式 OAuth2.0认证授权(黑马讲义) aBiu

1.分布式系统认证方案 1.1什么是分布式系统 随着软件环境和需求的变化 ,软件的架构由单体结构演变为分布式架构,具有分布式架构的系统叫分布式系统,分布式系统的运行通常依赖网络,它将单体结构的系统分为若干服务,服务之间通过网络交互来完成用户的业务处理,当前流行的微服务架构就是分布式系统架构,如下图: 分布式系统具体如下基本特点: 分布性:每个部分都可以独立...