柔情似水 发表于 2015-2-16 00:26:14

ASP网页编程之Asp编码优化技能8则(转)

写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了. 另外大家可以回去问问公司里的小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安全

活着的死人 发表于 2015-2-16 02:14:19

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

分手快乐 发表于 2015-2-16 21:59:11

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

简单生活 发表于 2015-3-1 16:59:45

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。

飘灵儿 发表于 2015-3-10 20:23:03

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

愤怒的大鸟 发表于 2015-3-17 01:09:17

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

海妖 发表于 2015-3-23 10:37:34

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

金色的骷髅 发表于 2015-3-26 13:57:24

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

深爱那片海 发表于 2015-4-1 01:08:32

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

变相怪杰 发表于 2015-4-11 02:55:38

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

若相依 发表于 2015-4-14 04:27:51

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

小女巫 发表于 2015-4-18 13:42:50

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

再见西城 发表于 2015-4-21 04:00:11

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

因胸联盟 发表于 2015-4-22 13:08:34

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

仓酷云 发表于 2015-4-26 02:10:59

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

爱飞 发表于 2015-5-12 09:54:16

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

灵魂腐蚀 发表于 2015-5-12 10:38:55

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

精灵巫婆 发表于 2015-6-19 21:49:13

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

谁可相欹 发表于 2015-6-26 21:12:27

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

柔情似水 发表于 2015-7-2 18:07:35

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
页: [1] 2
查看完整版本: ASP网页编程之Asp编码优化技能8则(转)