Asp 编码优化技巧 8 则
ASP(Active Server Page)是 Microsoft 公司推出的基于 PWS(Personal Web Server)&;IIS(Internet Information Server)平台的、基于 ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前 日趋成熟完善。在这里仅就代码优化进行一些简单讨论。 1、声明 VBScript 变量 、 在 ASP 中,对 vbscript 提供了强劲的支持,能够无缝集成 vbscript 的函数、方法,这样给 扩展 ASP 的现有功能提供了很大便利。由于 ASP 中已经模糊了变量类型的概念,所以,在 进行 ASP 与 vbscript 交互的过程中,很多程序员也惯于不声明 vbscript 的变量,这样加重了 服务器的解析负担,进而影响服务器的响应请求速度。 鉴于此,我们可以象在 VB 中强制用户进行变量声明一样在 vbscript 中强制用户进行变量声 明。实现方法是在 ASP 程序行首放置<% option explicit%>。 2、对 URL 地址进行编码 、 在我们使用 asp 动态生成一个带参数 URL 地址并进行跳转时,在 IE 中解析很正常,但在 NetScrape 浏览时却有错误如下:
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.
解决方法是对生成的 URL 参数使用 ASP 内置 server 对象的 URLencode 方法进行 URL 编码 , 例子如下:
<% URL="xur.asp" var1="username=" &; server.URLencode("xur") var2="&;company=" &; server.URLencode("xurstudio") var3="&;phone=" &; server.URLencode("021-53854336-186") response.redirect URL &; "?" &; var1 &; var2 &; var3 %>
3、清空对象 、 当使用完对象后,首先使用 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 FUN