仓酷云

标题: ASP网页编程之甚么才是进步ASP功能的最好挑选(二) [打印本页]

作者: 小魔女    时间: 2015-1-16 22:54
标题: ASP网页编程之甚么才是进步ASP功能的最好挑选(二)
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!功能
是不是应当开启缓冲器?

  经由过程剧本程序启动缓冲器
  在ASP剧本的顶部包括Response.Buffer=True,IIS就会将页面的内容缓存。
  <%OPTIONEXPLICIT
  Response.Buffer=true
  DimFirstName
  …
  /app1/buffer__1.asp的片断
  之前的最好(反响工夫)=7.05msec/page
  反响工夫=6.08msec/page
  差=-0.97msec(下降13.7%)
  功能失掉了极年夜进步。可是等等,还能有更好的。
  经由过程服务器设置启动缓冲器
  固然在IIS5.0中缓冲器是被默许启动的,可是在IIS4.0中还必需手动来启动它。这时候要找到站点的Properties对话框,在那边,从HomeDirectory标签当选择设置按钮。然后在"Appoptions"下选择"enablebuffering"。关于这个测试,Response.Buffer语句从剧本中被移走了。
  之前的最好=7.05msec/page
  反响工夫=5.57msec/page
  差=-1.48msec(下降21.0%)
  今朝,这是我们所失掉的最快反响了,比我们之前最好情形下的反响工夫还要下降21%。从如今入手下手,我们今后的测试都要把这个反响工夫作为基准值。
  回忆及观察
  缓冲器是进步功能的好办法,以是把缓冲器设置成服务器的默许值很有需要。假如由于某些缘故原由,页面不克不及准确地使缓冲器运转,只必要Response.Buffer=False命令便可。缓冲器的一个弱点是在全部页面处置完之前,用户从服务器看不就任何器材。因而,在庞大页面的处置时代,偶而挪用一次Response.Flush来更新用户是个好主张。
  如今在我们的划定规矩中又增添了一条:老是经由过程服务器设置开启缓冲器。
是不是应当思索向ASP代码中增添正文?
  年夜部分HTML开辟职员都晓得包括HTML正文不是个好主张,起首会增添传输数据的范围,其次它们只是向其余开辟职员供应有关你页面构造的信息。可是ASP页面上的正文又怎样呢?它们历来不分开服务器,但也的确要增添页面的范围,因而必需用ASP举行分化。
  在此次的测试中,我们增添20条正文,每条有80个字符,统共有1600个字符。
  <%OPTIONEXPLICIT
  -------------------------------------------------------------------------------
  …20lines…
  -------------------------------------------------------------------------------
  DimFirstName
  …
  /app2/comment_1.asp片断
  基准=5.57msec/page
  反响工夫=5.58msec/page
  差=+0.01msec(增添0.1%)
  测试的了局是惊人的。固然正文几近相称于文件自己的两倍,可是它们的存在并没有给反响工夫带来很年夜的影响。以是说我们能够遵守以下划定规矩:
  只需利用过度,ASP正文对功能的影响很小或基本没有影响。
是不是应当为页面明白地设置默许言语?
  IIS处置VBScript是默许的设置,可是我看到,在年夜多半例子中仍是用<%@LANGUAGE=VBSCRIPT%>声明将言语明白地设置为VBScript。我们的下一个测试将查验这个声明的存在对功能有甚么影响。
  <%@LANGUAGE=VBSCRIPT%>
  <%OPTIONEXPLICIT
  DimFirstName
  …
  /app2/language1.asp片断。
  基准值=5.57msec/page
  反响工夫=5.64msec/page
  差=+0.07msec(增添1.2%)
  能够看到,包括了言语的声明对功能有一个稍微的影响。因而:
  *设置服务器的默许言语设置以与站点上利用的言语相婚配。
  *除非你利用非默许言语,不要设置言语声明。
假如不必要,是不是应当封闭Session形态?
  制止利用IIS的Session高低文有很多来由,那些已能够自力成为一篇文章。我们如今试图回覆的成绩是当页面不必要时,封闭Session高低文是不是对功能进步有所匡助。从实际上讲应当是一定的,由于如许一来就不必要用页面例示Session高低文了。
  同缓冲器一样,Session形态也有两种设置办法:经由过程剧本和经由过程服务器设置。
  经由过程剧本封闭Session高低文
  关于这个测试,要封闭页面中的Session高低文,我增添一个Session形态声明。
  <%@ENABLESESSIONSTATE=FALSE%>
  <%OPTIONEXPLICIT
 DimFirstName
 …
  /app2/session_1.asp片断。
  基准值=5.57msec/page
  反响工夫=5.46msec/page
  差=-0.11msec(下降2.0%)
  只经由过程如许一个小小的勉力就失掉了不错的前进。如今看看第二部分。
  经由过程服务器设置封闭Session高低文
  要在服务器上封闭Session高低文,请到站点的Properties对话框。在HomeDirectory标签上选择Configuration按钮。然后在"Appoptions"下作废"enablesessionstate"的选择。我们在没有ENABLESESSIONSTATE声明的情形下运转测试。
  基准值=5.57msec/page
  反响工夫=5.14msec/page
  差=-0.43msec(下降7.7%)
  这是功能的又一个明显进步。以是,我们的划定规矩应是:在不必要的情形下,老是在页面或使用程序的程度上封闭Session形态。
利用OptionExplicit会使功能有本色改动吗?
  在一个ASP页面的顶部设置OptionExplicit以请求一切的变量在利用之前都要在页面长进行声明。这有两个缘故原由。起首使用程序能够更快地处置变量的存取。其次,如许能够避免我们偶然中错用变量的名字。在这个测试中我们移走OptionExplicit援用和变量的Dim声明。
  基准值=5.57msec/page
  反响工夫=6.12msec/page
  差=+0.55msec(9.8%增添)、
  只管有一些代码行从页面中往失落了,反响工夫却仍然增添了。以是只管利用Optionexplicit偶然候费工夫,可是在功能上却有很明显的效果。因而我们又能够增添一条划定规矩:在VBScript中老是利用Optionexplicit。
是不是应当把剧本逻辑放在子程序和函数区?
  用函数和子程序来构造和办理代码是一个很好的办法,出格是当一个代码区在页面中屡次利用的情形。弱点是要在体系上增添一个做不异事情的分外函数挪用。子程序和函数的另外一个成绩是变量的局限。从实际上说,在一个函数区内指定变量更无效。如今我们看看这两个方面怎样产生感化。
  将Response.Write语句移进子程序
  这个测试只是将Response.Write语句移进一个子程序区内。
  …
  CALLwriteTable()
  SUBwriteTable()
  Response.Write("<html>"&_
  "<head>"&_
  …
  "<tr><td><b>EMail:</b></td><td>"&EMail&"</td></tr>"&_
  "<tr><td><b>BirthDate:</b></td><td>"&BirthDate&"</td></tr>"&_
  "</table>"&_
  "</body>"&_
  "</html>")
  ENDSUB
  /app2/function1.asp片断
  基准值=5.57msec/page
  反响工夫=6.02msec/page
  差=+0.45msec(8.1%增添)
  同意料中一样,子程序挪用给页面带来了分外的包袱。
  将一切剧本移进子程序中
  在这个测试中,Response.write语句与变量声明都移进一个子程序区中。
  <%OPTIONEXPLICIT
  CALLwriteTable()
  SUBwriteTable()
  DimFirstName
  …
  DimBirthDate
  FirstName="John"
  …
  BirthDate="1/1/1950"
  Response.Write("<html>"&_
  "<head>"&_
  "<title>ResponseTest</title>"&_
  "</head>"&_
  "<body>"&_
  "<h1>ResponseTest</h1>"&_
  "<table>"&_
  "<tr><td><b>FirstName:</b></td><td>"&FirstName&"</td></tr>"&_
  …
  "<tr><td><b>BirthDate:</b></td><td>"&BirthDate&"</td></tr>"&_
  "</table>"&_
  "</body>"&_
  "</html>")
  ENDSUB
  /app2/function2.asp片断
  基准值=5.57msec/page
  反响工夫=5.22msec/page
  差=-0.35msec(6.3%下降)
  十分风趣!只管将变量移到函数局限内增添了分外的函数挪用,但实践上却进步了功能。我们又能够增添以下划定规矩:
  *在一个页面上,假如代码要利用一次以上,就将代码封进函数区。
  *得当时分,将变量声明移到函数局限内。
利用包括文件有甚么影响?
  ASP编程的一个主要功效就是包括来自别的页面的代码。经由过程这项功效,程序员能够在多个页面上共享函数,使代码更容易于保护。弱点在于服务器必需从多个来历组装页面。以下是利用Include文件的两个测试。
  利用内联代码的Include文件
  在这个测试中,有一小段代码被移到一个Include文件中:
  <%OPTIONEXPLICIT
  DimFirstName
  …
  DimBirthDate
  FirstName="John"
  …
  BirthDate="1/1/1950"
  %>
  <!--#includefile="inc1.asp"-->
  /app2/include_1.asp片断
  基准值=5.57msec/page
  反响工夫=5.93msec/page
  差=+0.36msec(6.5%增添)
  这不奇异。利用Include文件构成了负载。
  在函数区利用Include文件
  在这里,代码都包装在一个Include文件中的子程序里。Include援用是在页面顶部举行的,在ASP剧本的得当地位挪用子程序。
  <%OPTIONEXPLICIT
  DimFirstName
  …
  DimBirthDate
  FirstName="John"
  …
  BirthDate="1/1/1950"
  CALLwriteTable()
  %>
  <!--#includefile="inc2.asp"-->
  /app2/include_2.asp片断
  基准值=5.57msec/page
  反响工夫=6.08msec/page
 差=+0.51msec(9.2%增添)
  这对功能酿成的影响比functions挪用还年夜。因而:只要今世码在页面之间共享时才利用Include文件。
实行毛病处置时会构成多年夜的负载?
  关于一切真实的使用程序来讲,毛病处置都是需要的。这个测试中,经由过程挪用OnErrorResumeNext函数来挪用毛病句柄。
  <%OPTIONEXPLICIT
  OnErrorResumeNext
  DimFirstName
  …
  /app2/error_1.asp片断
  基准值=5.57msec/page
  反响工夫=5.67msec/page
  差=0.10msec(1.8%增添)
  你能够看到,毛病句柄带来了价值。我们能够提出以下倡议:只要在会产生超越测试或把持才能以外的情形时才利用毛病句柄。一个最基础的例子就是利用存取别的资本,如ADO或FileSystem工具的COM工具。
设置一个高低文处置是不是对功能有影响?
  当毛病产生时,在页面上设置一个高低文处置同意剧本举行反转操纵。这是经由过程在页面上利用处置声明来设置的。
  <%@TRANSACTION=REQUIRED%>
  <%OPTIONEXPLICIT
  DimFirstName
  …
  /app2/transact1.asp片断
  基准值=5.57msec/page
  反响工夫=13.39msec/page
  差=+7.82msec(140.4%增添)
  啊!这实在最具有戏剧性的了局。以是请寄望以下划定规矩:只要当两个或更多操纵被作为一个单位实行时,才利用处置高低文。

国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了
作者: 再见西城    时间: 2015-1-19 06:51
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者: 若天明    时间: 2015-1-24 11:16
不能只是将它停留在纸上谈兵的程度上。
作者: 变相怪杰    时间: 2015-2-1 06:18
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
作者: admin    时间: 2015-2-7 01:22
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
作者: 兰色精灵    时间: 2015-2-19 07:48
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
作者: 小女巫    时间: 2015-3-6 14:13
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
作者: 仓酷云    时间: 2015-3-13 01:52
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
作者: 透明    时间: 2015-3-20 09:12
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2