ASP网站制作之披著羊皮的年夜野狼 - Session
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。session ^略微年夜型一cASP的人都晓得,Session@物件真是好用,它能够用碛利用者公有的Y料担劝踩址奖恪5悄阏娴闹Session的作道理幔炕蛟S懂得以後,你就不再太敢利用@使人又塾趾薜奈锛km然D而替换之的办法稍嫌麻陂L期考量之下,也就不能不@N做了。起首碇vvSession的好梢杂碛用舳怂接械馁Y料担K且在rg炔А_@真的是很主要的功效,特别是有T的系y需要用到的。像是T的登进、rg、B和SS多多的即rY料z如锵到y利用者的锘@鹊纳唐珐{,@些Y凫陡魇褂谜咚饺怂枰ǔi_l者都是利用Session怼
但是,在ASP中的Session是利用Cookies所成,伺服器⑺械Session扔的Y料,以Cookies的体例髦劣舻g[器。一般一样平常g[器⑦@些Cookies存起恚慨利用者cxBY,再次c伺服器做Br,g[器就堰@些Cookies骰Server供做怼_@便是Session的作道理,Y料量年夜一cr,由於必鞒鋈ビ质栈恚坏跃路l,效能相档停Server必花M更多的Y源在做B砗椭匦屡渲糜w等初始幼鳌,F在你大概搿何冶仨用@功效,只好奚c了』,不^本文vSession一方面是教Т蠹疑儆茫涣硪环矫娈然是有替换k法,o接著上龅模褪峭Global.asa鹊Application物件。
Application也是rY料的妙手,各方面的才能和用法都和Session一樱徊贿^相^之下,它所的Y料是凫豆玫模簿褪侨魏问褂谜叨伎梢怨灿玫淖悼臻g。Application不像Session,不是①Y料鹘o利用者,等下一次B再x取回恚侵苯佑在Server上的w,相χ滦苌峡焐SessionS多。
由於Application物件是公用的,起首必做的,就是要把一K公用的^域o各利用者,每用碛凶约旱^域能够Y料,以_到模MSession的目标。F在有煞N做法:1、在Serverr事前初始化创建及分派利用者w空g,一般@N做法m然一Server_C就先琢嗽S多Y源,但也省往了以後每利用者B就必做一次分派的麻5限定,利用@N办法必限定最年夜人担伸妒且泳统跏蓟只能A估创建某盗康挠w空g,以是@N办法一般用於谈天室@N小型的程式上。2、@N办法洞笮贸淌碚f算^恰的,裼B的分派法,利用者第一次B到Server上才_始分派Y源o此用簟_@煞N模MSession的计划,目标都是ppSessionY源的损耗,但竟是o法完整替换,我是必要利用到一ccSession,最少Server已能pp很多恕
■第一计划
起首我_始第一计划的作,由於是r初始化Application,我然要Global.asa中著手:
<SCRIPTLANGUAGE="VBScript"RunAt="Server">Global.asaServerr绦SubApplication_OnStart()DimiO定最年夜下限人50人Application("ClientMax")=50檫@50人事前创建悼臻gFori=1ToApplication("ClientMax")此P悼臻g是不是遭已利用Application("User_Status_"&i)=0创建晒P悼臻g:、登进rgApplication("User_Account_"&i)=EmptyApplication("User_Logtime_"&i)=EmptyNextEndSub</SCRIPT>
已完成初始化了,但怎样利用呢?我只需在利用者登进的中央,把底本利用SessionΥ娴馁Y料,如、登进rg,改成我创建好的Application物件中就能够了:
ふ椅幢皇褂玫目臻gFori=1ToApplication("ClientMax")IfApplication("User_Status_"&i)=0Then利用者rSession("Index")=ii定ApplicationApplication.LockO成已利用的BApplication("User_Status_"&i)=1放进蒂Y料Application("User_Account_"&i)=AccountApplication("User_Logtime_"&i)=Now()排除i定Application.UnlockExitForEndIfNext
要获得利用者的相P蒂Y料t就像上面的做法:
Response.Write(Application("User_Account_"&Session("Index"))
你大概lF,不是f不要利用Session幔磕槭颤N下面的原始a中有Session的存在?后面也f^,@替换计划K不克不及完整取代失落Session,g[器K不是一向和Server哆BB的,x取完面就嗑,那我要怎N晓得下次B的是统一人呢?@r候就需要靠Session,我o利用者一M即r的,此就是利用者於Application上悼臻g的a,你能够想像成y行中有良多的保U箱,你碛幸恢ц匙,而匙上有,匙上的能够行TI你往你本人的保U箱。此办法另有改M之π⌒偷贸淌揭呀是很蛴昧恕
■第二计划
P於上一计划,你大概也想到,我自的利用了Session碛,v到,Session物件有供应一『SessionID』办法。]e,不论我要不要利用,Server都每用艟刑a,且此a不匮},至於@a就是用Session.SessionID获得。@刑a是Session必定龅幼鳎便可使用它取代我本人的程式,亦又省了一道工夫,乃至有更年夜的U充性。但基础上,下面的第一计划是有它的用处在,像是拗迫档牧奶焓业鹊刃贸淌剑酉淼牡诙娲桨福褪轻^年夜型的系y了。
每秒上站人颠_蛋登踔辽先f人的W站,利用之前的计划,一定是行欠亨的。假O你⑸舷奕翟O10000,Server一泳你切出一f^域浣o一f利用者,倘使一^域中有5担32位元M(Byte),10000就琢320000K(320MB)以上,Server一泳腿四屈N多的渣滓到w,效能荼剡]上鼍徒档筒簧伲欢e看@些底趾苌伲樽约旱512MB蛴茫厦娴底质羌僭O一最低底郑由Server在设置wr~外利用到几Y源不得而知,以是只嗖汀R虼私Qk法只要B设置利用者悼臻g,有利用者cServerBr才切一K^域出恚绱吮悴豁要事前就设置好年夜w。
第二计划做起硎潜容^危把第一计划的|西全体G失落,我不必要拥Global.asa,只必要改利用者登进的中央和其他有效到的中央:
i定ApplicationApplication.Lock放进蒂Y料Application("User_Account_"&Session.SessionID)=AccountApplication("User_Logtime_"&Session.SessionID)=Now()排除i定Application.Unlock
要获得利用者的相P蒂Y料t就像上面的做法:
Response.Write(Application("User_Account_"&Session.SessionID))
以往看良多著Session吃Y源吃的很矗量不要用,但是必用的r候是得用,e又都]教^妥的解Qk法。F在你懂了怎样替换Session,好好往使用吧!或S总是困_的效能}能因而改良很多!
</p>ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
页:
[1]