首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页制作心得技巧

提高ASP性能的最佳选择第一部分

来源: 互联网    日期:2007-10-29
 
内容摘要:ASP开发人员为了在他们的设计项目中获得更好的性能和可扩展性而不断努力。幸运地是,有许多书籍和站点在这方面提供了很好的建议。但是这些建议的基础都是从ASP平台工作的结构上所得出的结论,对实际获得的性能的提高没有量的测量。由于这些建议需要更加复杂的编码过程并降低了编码的可读性,开发人员就只能在看不到实际运行效果的情况下,独自衡量为了提高他们ASP应用程序的性能是否值得付出这些代价。 

  本文分为两大部分,我将介绍一些性能测试结果,帮助开发人员来确定某一特定举措是否不仅对将来的项目来说是值得的,并且能够对原来的项目进行更新。在第一部分我将回顾一些ASP开发的基础性问题。在第二部分,将涉及一些最优化ADO函数,并将它们的结果与调用VB COM对象执行相同ADO函数的ASP页面进行比较。这些结果很让人开眼界,甚至有些时候是很令人吃惊的。

  在本文中,我们将回答以下问题:

  * 将ASP生成的内容写入响应流中最有效的方法是什么?

  * 是否应该开启缓冲器?

  * 是否应该考虑向ASP代码中增加注释?

  * 是否应该为页面明确地设置默认语言?

  * 如果不需要,是否应该关闭Session 状态?

  * 是否应该把脚本逻辑放在子程序和函数区中?

  * 使用包含文件有什么影响?

  * 执行错误处理时会施加什么样的负载?

  * 设置一个上下文处理是否对性能有影响?

     所有测试都是用Microsoft的Web应用程序重点工具(WAST)来进行的,这是一个免费的工具,可以在这里找到。我用WAST创建了一个简单的test 脚本,反复调用下面所描述的ASP页面测试(每个超过70,000次)。反应的时间基于平均最后字节总时间(TTLB), 也就是从最初请求的时间到工具从服务器接收最后一位数据的时间。我们的测试服务器是一个Pentium 166,内存为196MB,客户机为Pentium 450,内存为256MB。你也许会想这些机器的性能并不算很高级,但是不要忘了,我们并不是要测试服务器的容量,我们只是要测试服务器每次处理一个页面所用的时间。测试期间这些机器不做其它工作。WAST 测试脚本、测试报告以及所有的ASP测试页面都包含在ZIP文件中,你可以自己进行回顾和测试。
将ASP生成的内容写入响应流中最有效的方法是什么?
   使用ASP的一个最主要原因是在服务器上生成动态内容。所以很明显,我们测试的起点是确定将动态内容发送到响应流中的最适合的方式。在多种选择中,有两个是最基本的:一是使用内联ASP标记,另一个是使用Response.Write 语句。

  为测试这些选择,我们创建了一个简单的ASP页面,其中定义了一些变量,然后将它们的值插入表格中。虽然这个页面很简单也不是很实用,但它允许我们分离并测试一些单独的问题。

  使用ASP内联标记

  第一个测试包括使用内联ASP标记< %= x % >,其中x是一个已赋值的变量。到目前为止,这个方法是最容易执行的,并且它使页面的HTML部分保持一种易于阅读和维护的格式。

< % OPTION EXPLICIT
 Dim FirstName
 Dim LastName
 Dim MiddleInitial
 Dim Address
 Dim City
 Dim State
 Dim PhoneNumber
 Dim FaxNumber
 Dim EMail
 Dim BirthDate
 FirstName = "John"
 MiddleInitial = "Q"
 LastName = "Public"
 Address = "100 Main Street"
 City = "New York"
 State = "NY"
 PhoneNumber = "1-212-555-1234"
 FaxNumber = "1-212-555-1234"
 EMail = "john@public.com"
 BirthDate = "1/1/1950"
 % >
 < HTML >
 < HEAD >
 < TITLE >Response Test< / TITLE >
 < /HEAD >
 < BODY >
 < H1 >Response Test< /H1 >
 < TABLE >
 < tr >< td >< b >First Name:< /b >< /td >< td >< %= FirstName % >< /td >< /tr >
 < tr >< td >< b >Middle Initial:< /b >< /td >< td >< %= MiddleInitial % >< /td >< /tr >
 < tr >< td >< b >Last Name:< /b >< /td >< td >< %= LastName % >< /td >< /tr >
 < tr >< td >< b >Address:< /b >< /td >< td >< %= Address % >< /td >< /tr >
 < tr >< td >< b >City:< /b >< /td >< td >< %= City % >< /td >< /tr >
 < tr >< td >< b >State:< /b >< /td >< td >< %= State % >< /td >< /tr >
 < tr >< td >< b >Phone Number:< /b >< /td >< td >< %= PhoneNumber % >< /td >< /tr >
 < tr >< td >< b >Fax Number:< /b >< /td >< td >< %= FaxNumber % >< /td >< /tr >
 < tr >< td >< b >EMail:< /b >< /td >< td >< %= EMail % >< /td >< /tr >
 < tr >< td >< b >Birth Date:< /b >< /td >< td >< %= BirthDate % >< /td >< /tr >
 < /TABLE >
 < /BODY >
 < /HTML >

/app1/response1.asp的完整代码

  以前的最佳(反应速度) = 8.28 msec/page

  在HTML的每一行使用Response.Write 语句

  许多比较好的学习文档建议避免使用前面的那种方法。其主要理由是,在输出页面和处理页面施加反应时间的过程中,如果web 服务器不得不在发送纯HTML和处理脚本之间进行转换,就会发生一种被称为上下文转换的问题。大部分程序员一听到这里,他们的第一反应就是将原始的HTML的每一行都包装在Response.Write函数中。


  Response.Write("< html >")
  Response.Write("< head >")
  Response.Write(" < title >Response Test< /title >")
  Response.Write("< /head >")
  Response.Write("< body >")
  Response.Write("< h1 >Response Test< /h1 >")
  Response.Write("< table >")
  Response.Write("< tr >< td >< b >First Name:< /b >< /td >< td >" & FirstName & "< /td >< /tr >")
  Response.Write("< tr >< td >< b >Middle Initial:< /b >< /td >< td >" & MiddleInitial & "< /td >< /tr >")
  … <

/app1/response2.asp的片段

  以前的最佳(反应速度) = 8.28 msec/page

  反应时间 = 8.08 msec/page

  差= -0.20 msec (减少 2.4%)

  我们可以看到,使用这种方法与使用内联标记的方法相比在性能上获得的收益非常小,这也许是因为页面给服务器装载了一大堆小的函数调用。这种方法最大的缺点是,由于现在HTML都嵌入脚本中,所以脚本代码变得更加冗长,更加难以阅读和维护。



文章共2页:  [1] [2]


更多的提高ASP性能的最佳选择第一部分请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2007-10-29   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报