仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 785|回复: 11
打印 上一主题 下一主题

[学习教程] ASP网站制作之ASP编码优化

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。编码|优化
ASP(ActiveServerPage)是Microsoft公司推出的基于PWS(PersonalWebServer)&IIS(InternetInformationServer)平台的、基于ISAPI(InternetServiceAPI)道理的静态网页开辟手艺,今朝日益成熟完美。在这里仅就代码优化举行一些复杂会商。

1、  声明VBScript变量

在ASP中,对vbscript供应了微弱的撑持,可以无缝集成vbscript的函数、办法,如许给扩大ASP的现有功效供应了很年夜便当。因为ASP中已含混了变量范例的观点,以是,在举行ASP与vbscript交互的过程当中,良多程序员也惯于不声明vbscript的变量,如许减轻了服务器的剖析包袱,进而影响服务器的呼应哀求速率。
鉴于此,我们能够象在VB中强迫用户举行变量声明一样在vbscript中强迫用户举行变量声明。完成办法是在ASP程序行首安排<%optionexplicit%>。
2、  对URL地点举行编码

在我们利用asp静态天生一个带参数URL地点并举行跳转时,在IE中剖析很一般,但在NetScrape扫瞄时却有毛病以下:
HTTPError400
400BadRequest
Duetomalformedsyntax,therequestcouldnotbeunderstoodbytheserver.
Theclientshouldnotrepeattherequestwithoutmodifications.
办理办法是对天生的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.redirectURL&"?"&var1&var2&var3
%>
3、  清空工具

当利用完工具后,起首利用Close办法来开释工具所占用的体系资本;然后设置工具值为“nothing”开释工具占用内存。昔时,我就是在一张页面上创立了百余个没有清空工具的纪录集而溃散了我的IIS。上面的代码利用数据库内容创建一个下拉列表。代码示比方下:
<%myDSN="DSN=xur;uid=xur;pwd=xur"
mySQL="select*fromauthorswhereAU_ID<100"
setconntemp=server.createobject("adodb.connection")
conntemp.openmyDSN
setrstemp=conntemp.execute(mySQL)
ifrstemp.eofthen
response.write"数据库为空"
response.writemySQL
conntemp.close
setconntemp=nothing
response.end
 endif%>
<%dountilrstemp.eof%>
<%
rstemp.movenext
loop
rstemp.close
setrstemp=nothing
conntemp.close
setconntemp=nothing
%>
4、利用字符串创建SQL查询

利用字符串来创建查询其实不能加速服务器的剖析速率,相反,它还会增添服务器的剖析工夫。但在这里仍旧保举利用字符串取代复杂的查询语句来举行查询。如许做的优点是,能够敏捷发明程序成绩地点,从而便当高效地天生程序。示比方下:
<%mySQL=""select*"
mySQL=mySQL&"frompublishers"
mySQL=mySQL&"wherestate=NY"
response.writemySQL
setrstemp=conntemp.execute(mySQL)
rstemp.close
setrstemp=nothing
%>
5、  利用case举行前提选择

在举行前提选择的时分,只管利用case语句,制止利用if语句。利用case语句,可使程序流程化,实行起来也比if语句来的快。示比方下:
<%
  FORi=1TO1000
  n=i
  Response.WriteAddSuffix(n)&"<br>"
  NEXT
  %>
  <%
  FunctionAddSuffix(num)
numpart=RIGHT(num,1)
SELECTCASEnumpart
CASE"1"
IFInStr(num,"11")THEN
num=num&"th"
ELSE
num=num&"st"
ENDIF
CASE"2"
IFInStr(num,"12")THEN
num=num&"th"
ELSE
num=num&"nd"
ENDIF
CASE"3"
IFInStr(num,"13")THEN
num=num&"th"
ELSE
num=num&"rd"
ENDIF
CASE"4"
num=num&"th"
CASEELSE
num=num&"th"
ENDSELECT
AddSuffix=num
  ENDFUNCTION
%>
6、  利用adovbs.inc文件中界说的常量翻开纪录集

翻开纪录集时,能够界说纪录集翻开的游标范例和锁定范例。在adovbs.inc文件中界说了一些常量来界说这些范例。adovbs.inc文件保留在inetpubiissamplesIISamples目次上面。上面枚举几个经常使用的游标范例和锁定范例。
游标范例:adOpenFowardOnly游标只能向前;adOpenKeyset游标可向前大概向后,如一用户增加纪录,新纪录不会呈现在纪录会合;adOpenDynamic游标静态随便;adOpenStatic纪录集不合错误其他用户酿成的纪录修正有所反应。
锁定范例:adLockReadOney不克不及修正纪录会合的纪录;adLockPessimistic在编纂一笔记录时锁定它;adLockOptimstic挪用纪录集Update办法时才锁定纪录;adLockBatchOpeimstic纪录只能成批更新。
<!--#INCLUDEVIRTUAL="/ADOVBS.INC"-->
<%
connectme="DSN=xur;uid=xur;pwd=xur"
sqltemp="select*frompublisherswherename=xur"
setrstemp=Server.CreateObject("adodb.Recordset")
rstemp.opensqltemp,connectme,adOpenStatic,adLockOptimstic
response.writerstemp.recordcount&"recordsin<br>"&sqltemp
rstemp.close
setrstemp=nothing
%>
7、  制止在利用global.asa文件中举行工具界说

因为global.asa文件中的内容能够为站点内一切文件援用,无疑,在global.asa文件中举行工具界说能够省往良多反复事情。好比在global.asa中的application_onstart函数中举行以下界说:
<%SUBapplication_onstart
setapplication("theCONN")=server.createobject("adodb.connection")
ENDSUB%>;
如许就能够在站点任何代码中做相似援用:
<%
mySQL="select*frompublisherswherestate=xur
setrstemp=application("theconn").execute(mySQL)
%>
一样地,能够在session_onstart函数中创立纪录集工具
<%SUBsession_onstart
setsession("rstemp")=server.createobject("adodb.recordset")
ENDSUB%>
然后在站点也面中举行以下援用:
<%
mySQL="select*frompublisherswherestate=xur
setsession("rstemp")=conntemp.execute(mySQL)
%>
但如许做的同时也有很年夜的负面影响,因为Application和session变量都只要在封闭网站的时分才开释占用的资本,以是session参数会华侈大批不用要内存,并且此时application变量成为服务器功能的瓶颈。
办理办法:创建界说工具asp页面,在必要举行挪用这些工具的页面上,引进这张asp页面。假定界说工具的asp页面称号为define.asp,则只需在对应asp页面中到场以下语句就可以引进该页面。
<!--#INCLUDEVIRTUAL="/define.asp"-->
在举行页面引进时,最幸亏待引进的asp文件中不要包括<%@LANGUAGE="VBSCRIPT"%>语句。由于在asp文件中,只能有一句由@来界说的剧本剖析言语。

8、  平安防护

asp供应了很好的代码回护机制,一切的asp代码都在服务器端实行而只前往给客户端代码实行了局。即使如许,在老版本的IIS中还能够在文件名前面家::$DATA来检察asp的源代码,这已属于WebServer平安范围不在本文会商局限内。上面提出两点复杂的平安注重事项。
  固然在asp中倡议引进文件以inc作为扩大名,在这里仍倡议以asp作为引文件的扩大名。当这些代码在平安机制欠好的WebServer上运转时,只需在地点栏上输出引进文件的地点(inc为扩大名),就能够扫瞄该引进文件的内容,这是因为在WebServer上,假如没有界说好剖析某范例(好比inc)的静态毗连库时,该文件以源码体例显现。
  不要把数据库文件放在网站布局外部,如许,当歹意人士猎取数据库路径后,就能够容易猎取该数据库,进而肆意变动数据库内容。对照好的做法是,为数据库创建DSN(DateSourceName),而在举行数据库会见时间接会见该DSN。

对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。
小妖女 该用户已被删除
沙发
发表于 2015-1-18 09:22:30 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
因胸联盟 该用户已被删除
板凳
发表于 2015-1-19 09:24:36 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
只想知道 该用户已被删除
地板
发表于 2015-1-24 12:03:17 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
海妖 该用户已被删除
5#
发表于 2015-1-24 12:03:22 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
小女巫 该用户已被删除
6#
发表于 2015-1-25 09:31:10 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
山那边是海 该用户已被删除
7#
发表于 2015-1-26 14:17:58 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
再现理想 该用户已被删除
8#
发表于 2015-2-4 15:09:52 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
不帅 该用户已被删除
9#
发表于 2015-2-28 15:34:55 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
小魔女 该用户已被删除
10#
发表于 2015-3-10 00:24:23 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
爱飞 该用户已被删除
11#
发表于 2015-3-17 03:11:45 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
乐观 该用户已被删除
12#
发表于 2015-3-23 18:02:59 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 23:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表