|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了. 另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)编码|技能|优化 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 FUNCTION
%>
6、 利用adovbs.inc文件中界说的常量翻开纪录集
翻开纪录集时,可以界说纪录集翻开的游标类型和锁定类型。在adovbs.inc文件中界说了一些常量来界说这些类型。adovbs.inc文件保留在\inetpub\iissamples\IISamples目次上面。上面罗列几个经常使用的游标类型和锁定类型。
游标类型:adOpenFowardOnly游标只能向前;adOpenKeyset游标可向前或向后,如一用户添加纪录,新纪录不会呈现在纪录集中;adOpenDynamic游标静态随便;adOpenStatic纪录集不合错误其他用户酿成的纪录修正有所反应。
锁定类型: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_on</p> 缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全 |
|