ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(InternetInformation Server)平台的、基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善。在这里仅就代码优化进行一些简单讨论。
HTTP Error 400 400 Bad Request Due to malformed syntax, the request could not be understood by the server. The client should not repeat the request without modifications.
当使用完对象后,首先使用Close方法来释放对象所占用的系统资源;然后设置对象值为“nothing”释放对象占用内存。当年,我就是在一张页面上创建了百余个没有清空对象的记录集而崩溃了我的IIS。下面的代码使用数据库内容建立一个下拉列表。代码示例如下: < % myDSN="DSN=xur;uid=xur;pwd=xur" mySQL="select * from authors where AU_ID< 100" set conntemp=server.createobject("adodb.connection") conntemp.open myDSN set rstemp=conntemp.execute(mySQL) if rstemp.eof then response.write "数据库为空" response.write mySQL conntemp.close set conntemp=nothing response.end end if%> < %do until rstemp.eof %> < % rstemp.movenext loop rstemp.close set rstemp=nothing conntemp.close set conntemp=nothing %>
4、使用字符串建立SQL查询
使用字符串来建立查询并不能加快服务器的解析速度,相反,它还会增加服务器的解析时间。但在这里仍然推荐使用字符串代替简单的查询语句来进行查询。这样做的好处是,可以迅速发现程序问题所在,从而便利高效地生成程序。示例如下: < %mySQL= ""select * " mySQL= mySQL & "from publishers" mySQL= mySQL & "where state=’NY’" response.write mySQL set rstemp=conntemp.execute(mySQL) rstemp.close set rstemp=nothing %>
5、使用case进行条件选择
在进行条件选择的时候,尽量使用case语句,避免使用if语句。使用case语句,可以使程序流程化,执行起来也比if语句来的快。示例如下: < % FOR i = 1 TO 1000 n = i Response.Write AddSuffix(n) & "< br>" NEXT %> < % Function AddSuffix(num) numpart = RIGHT(num,1) SELECT CASE numpart CASE "1" IF InStr(num,"11") THEN num = num & "th" ELSE num = num & "st" END IF CASE "2" IF InStr(num,"12") THEN > num = num & "th" ELSE num = num & "nd" END IF CASE "3" IF InStr(num,"13") THEN num = num & "th" ELSE num = num & "rd" END IF CASE "4" num = num & "th" CASE ELSE num = num & "th" END SELECT AddSuffix = num END FUNCTION %>
锁定类型:adLockReadOney不能修改记录集中的记录;adLockPessimistic在编辑一条记录时锁定它;adLockOptimstic调用记录集Update方法时才锁定记录;adLockBatchOpeimstic记录只能成批更新。 < !--#INCLUDE VIRTUAL="/ADOVBS.INC" --> < % connectme="DSN=xur;uid=xur;pwd=xur" sqltemp="select * from publishers where name=’xur’" set rstemp=Server.CreateObject("adodb.Recordset") rstemp.open sqltemp, connectme, adOpenStatic,adLockOptimstic response.write rstemp.recordcount & " records in< br>" & sqltemp rstemp.close set rstemp=nothing %>
7、避免在使用global.asa文件中进行对象定义
由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。比如在global.asa中的application_onstart函数中进行如下定义: < %SUB application_onstart set application("theCONN")=server.createobject("adodb.connection") END SUB %>; 这样就可以在站点任何代码中做类似引用: < % mySQL="select * from publishers where state=’xur’ set rstemp=application("theconn").execute(mySQL) %> 同样地,可以在session_onstart函数中创建记录集对象 < %SUB session_onstart set session("rstemp")=server.createobject("adodb.recordset") END SUB %> 然后在站点也面中进行如下引用: < % mySQL="select * from publishers where state=’xur’ set session("rstemp")=conntemp.execute(mySQL) %>