
E-file:Cary
Cary的最新文章:
- 转载文章,报销上网费
- 17岁“黑客”入侵学校网站 帮差生提成绩“恶搞”优秀生
- [设计佳作]我们的一生
- 中学生应用E-file技术建网站——刘航求知求是网站简介
- 八强网诚邀网络爱好者报道所关注的网站
- 06年IT界21大丑闻 索尼电池着火居首
- 如何提高网站的Google PR值
- 电子商务出现新BforC模式 B2C格局将变
- 美国视频网站竞争加剧 高价购买原创视频
- 专家提醒消费者域名投资暗藏风险
- 警惕IE浏览器被劫持
- 截至2006上半年,我国未成年人网民达1830万
- 互联网协会正式公布“恶意软件”最终定义
- 中国企业网站为何未进入爆发期
- [欣赏] 中式网站之古典风格
- 研究发现医生诊断也Google 搜索结果准确率58%
- 人因素(Human Factor)介绍
- 用户中心设计的概念
- 发一封邮件做一道数学题 100%剿灭垃圾邮件?
- 盖茨质疑WEB2.0 称新名词无非是赶时髦
- 2005中国行业电子商务网站TOP100榜单
- 网易也推出免费个性域名邮箱
- 12招让你充分管理操作系统
- 新威胁 十大Web2.0下的攻击方式
- Web2.0进入快速发展期
- 我能让WEB2.0赢利
- 网猎模式发挥WEB2.0优势获取人才
- 互联网的冬天,个人站站应该做些什么?
- 建立Web2.0网站需要解决的问题
- 特别报道:20年最强病毒排行榜
- 制作3D效果的LOGO旋转
- ActionScript 3.0 概要
- Flash MX常用快捷键一览
- 20个Flash制作漂亮动画的经典问题问答
- 搜索引擎不收录网站页面16种原因
- 网页版POPO盛秋清凉登场
- 世界互联网正处于剧变前夜
- 请不要主动地置隐私信息于危险之中
- 网易首页今日全新上线
- Net Live时代最佳建站系统——E-file
- Digg创始人:Web1.0是Emai Web2.0是IM
- 当web2.0遇上企业时
- 文明办团中央等出台举措变网瘾少年为网创人才
- 国内10大域名注册商
- shtml和html的区别
- 做网站,你的前途出路在那里?
- Google sitelinks的两个核心要素
- Google中文网站“谷歌”消失 疑为技术出错
- Google Earth V4.0.2091 Beta
- Google Sitelinks分析
首页--文章内容
| Asp编码优化技巧8则 |
| www.fh888.com 2006-1-8 23:35:00 |
| 媒体:网页天堂 作者:山无林 发布:Cary |
| ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的、基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善。在这里仅就代码优化进行一些简单讨论。 1、 声明VBScript变量 在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行A SP与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”释放对象占用内存。当年,我就是在一张页面上创建了百余个没有清空对象的记录集而崩溃了我的I IS 。下面的代码使用数据库内容建立一个下拉列表。代码示例如下: <% 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) & " " 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游标可向前或者向后,如一用户添加记录,新记录不会出现在记录集中;adOp enDynamic游标动态随意;adOpenStatic记录集不对其他用户造成的记录修改有所反映。 锁定类型:adLockReadOney不能修改记录集中的记录;adLockPessimistic在编辑一条记录时锁定它;adLockOptimstic调用记录集Update 方法时才锁定记录;adLockBatchOpeimstic记录只能成批更新。 <% 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 " & sqltemp rstemp.close set rstemp=nothing %> 7、 避免在使用global.asa文件中进行对象定义 由于global.asa文件中的内容可以为站点内所有文件引用,无疑,在global.asa文件中进行对象定义可以省去很多重复工作。比如在glob al.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) %> 但这样做的同时也有很大的负面影响,由于Application和session变量都只有在关闭网站的时候才释放占用的资源,所以session参数会浪费大量不必要内存,而且此时a pplication变量成为服务器性能的瓶颈。 解决方法:建立定义对象asp页面,在需要进行调用这些对象的页面上,引入这张asp页面。假设定义对象的asp页面名称为define.asp,则只要在对应a sp页面中加入以下语句就能引入该页面。 在进行页面引进时,最好在待引进的asp文件中不要包含<%@LANGUAGE="VBSCRIPT"%>语句。因为在asp文件中,只能有一句由@来定义的脚本解析语言。 8、 安全防护 asp提供了很好的代码保护机制,所有的asp代码都在服务器端执行而只返回给客户端代码执行结果。即便这样,在老版本的IIS中还可以在文件名后面家: :$DATA来查看asp的源代码,这已经属于Web Server安全范畴不在本文讨论范围内。下面提出两点简单的安全注意事项。 虽然在asp中建议引入文件以inc作为扩展名,在这里仍建议以asp作为引文件的扩展名。当这些代码在安全机制不好的Web Server上运行时,只需在地址栏上输入引入文件的地址(inc为扩展名),就可以浏览该引入文件的内容,这是由于在Web Server上,如果没有定义好解析某类型(比如inc)的动态连接库时,该文件以源码方式显示。 不要把数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,为数据库建立DSN(Date Source Name),而在进行数据库访问时直接访问该DSN。 这个文章挺老的了.不知道大家看过没有. 这些很基本了.希望能好的提高程序规范和效率朋友看看吧~ |
| 【声明】网页天堂刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何投资建议。转载请注明出处。 |
| 我也说两句 |
游客于2006-9-9 22:11:07写道:kdfka mddkgsdfgmdsfgksdfg ds gdfgdflgmdslgmdl df gkfdsll |
| 发表须知: 一、用户须严格遵守国家法律和政策,包括但不限于《全国人大常委会关于维护互联网安全的决定》、《信息网络传播权保护条例》等规定,审慎、合法地利用伊妃(E-file)平台发表言论、作品。 二、用户的言论、行为若涉嫌违法或侵权,用户可能被强制承担因该行为直接或间接导致的全部法律责任。依照法律法规规定,伊妃(E-file)运营方有义务提供用户资料,有义务和权利采取删除、屏蔽、断开链接等各种必要措施。 三、伊妃(E-file)中心授权网络法律专业研究服务机构“网络法苑”为用户及客户提供包括免费咨询在内的全方位的法律支持。 |

游客于2006-9-9 22:11:07写道: