仓酷云 发表于 2015-1-16 22:09:57

ASP网页编程之ASP技能集锦(官方威望版)-1

楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。技能  简介
  功能是一个特征。您必要事后计划功能,或是在往后从头编写使用程序。换句话说,甚么是最年夜限制优化ActiveServerPages(ASP)使用程序功能的好战略?
  本文为优化ASP使用程序和“VisualBasic(R)剧本编纂器(VBScript)”供应了很多技能。对很多圈套和缺点举行了会商。本文所列的倡议均在http://www.microsoft.com及其他站点长进行了测试,并且事情一般。本文假定您对ASP开辟有基础的了解,包含对VBScript和/或JScript、ASPApplication、ASPSession和其他ASP外部工具(哀求、呼应和服务器)。
  ASP的功能,一般不止取决于ASP代码自己。我们其实不想在一篇文章中包括一切的至理名言,只在最初列出与功能相干的资本。这些链接包含ASP和非ASP主题,包含“ActiveX(R)数据工具(ADO)”、“部件工具模子(COM)”、数据库和“Internet信息服务器(IIS)”设置。这些是我们喜好的链接-务请存眷它们。
  
  技能1:在Web服务器上缓存经常使用数据
  典范的ASP页从后端数据库检索数据,然后将了局转换为超文本标志言语(HTML)。不管数据库的速率怎样,从内存检索数据要比从后端数据库检索数据快很多。从当地硬盘读取数据一般也要比从数据库检索数据快很多。因而,一般能够经由过程在Web服务器(在内存或磁盘)上缓存数据来改良功能。
  缓存是典范的空间与工夫的折中。假如得当地缓存数据,您将看到功能会有惊人的进步。为使缓存发扬效率,它必需坚持常常重用的数据,并且从头盘算这些数据的价值是高贵的或对照高贵的。假如缓存充斥了渣滓数据,则是对存储器的华侈。
  不常常变更的数据也是缓存的候选数据,由于您不必忧虑数据与数据库的同步成绩。组合框、援用表、DHTML碎片、可扩大标志言语(XML)字符串、菜单项和站点设置变量(包含数据源称号(DSN)、Internet协定(IP)地点和Web路径)都是缓存的候选数据。注重,您能够缓存数据的暗示而不是数据自己。假如ASP页不常常变动,并且缓存的本钱也十分高(比方,全部产物目次),请思索事后天生HTML,而不是在每次哀求时从头绘制。
  数据应缓存在那边,有哪些缓存战略?数据常常缓存在Web服务器内存或Web服务器磁盘上。上面两个技能会商这些选项。
  
  技能2:在Application或Session工具中缓存经常使用数据
  ASPApplication和Session工具为在内存中缓存数据供应了便利的容器。既能够将数据付与Application工具,也可将数据付与Session工具,这些数据在HTTP挪用中将保存在内存中。Session数据按用户存储,而Application数据在一切用户间共享。
  什么时候将数据载进Application或Session?一般,在Application或Session启动时加载数据。要在Application或Session启动时加载数据,请鄙人面两函数中增加响应的代码:Application_OnStart()或Session_OnStart()。这两个函数应当位于Global.asa;假如没有,能够增加这些函数。也能够在第一次必要数据时加载数据。要举行上述操纵,请在ASP页中增加一些代码(或编写可重用的剧本函数),这些代码反省数据是不是存在,并在数据不存在时加载数据。这是称为缓慢盘算的典范功能手艺的例子-在您切实其实必要它之前,不举行盘算。请看例子:
  <%
  FunctionGetEmploymentStatusList
  Dimd
  d=Application("EmploymentStatusList")
  Ifd=""Then
  FetchEmploymentStatusList函数(不显现)
  从DB中掏出数据,前往数组
  d=FetchEmploymentStatusList()
  Application("EmploymentStatusList")=d
  EndIf
  GetEmploymentStatusList=d
  EndFunction
  %>
  能够为每块所需的数据编写相似的函数。
  数据应当以甚么格局存储?任何变量范例都可存储,由于一切剧本变量是各不不异的。比方,能够存储字符串、整型或数组。一般,您将以这些变量范例之一存储ADO纪录集的内容。若要猎取ADO纪录集衍生的数据,能够手工将数据复制到VBScript变量中,每次一个字段。利用一个ADO纪录集保存函数GetRows()、GetString()或Save()(ADO2.5),会更快更烦琐。完全而具体的内容已超越了本文的局限。上面的演示函数利用了GetRows()来前往纪录集数据的数组:
  取纪录集,以数组前往
  FunctionFetchEmploymentStatusList
  Dimrs
  Setrs=CreateObject("ADODB.Recordset")
  rs.Open"selectStatusName,StatusIDfromEmployeeStatus",_
  "dsn=employees;uid=sa;pwd=;"
  FetchEmploymentStatusList=rs.GetRows()以数组前往数据
  rs.Close
  Setrs=Nothing
  EndFunction
  对下面示例的进一步改善应该是缓存该列表的HTML,而不是缓存数组。上面是一个复杂的典范:
  取纪录集,以“HTML选项”列表前往
  FunctionFetchEmploymentStatusList
  Dimrs,fldName,s
  Setrs=CreateObject("ADODB.Recordset")
  rs.Open"selectStatusName,StatusIDfromEmployeeStatus",_
  "dsn=employees;uid=sa;pwd=;"
  s="<selectname=""EmploymentStatus">"&vbCrLf
  SetfldName=rs.Fields("StatusName")ADO字段绑定
  DoUntilrs.EOF
  上面一行违反了不要举行字符串联接,
  但这是能够的,由于我们正在创建高速缓存
  s=s&"<option>"&fldName&"</option>"&vbCrLf
  rs.MoveNext
  Loop
  s=s&"</select>"&vbCrLf
  rs.Close
  Setrs=Nothing拜见尽早开释
  FetchEmploymentStatusList=s以字符串前往数据
  EndFunction
  在一般的情形下,能够在Application或Session感化域中缓存ADO纪录集自己。有两个告诫:
  ADO必需为标志的自在线程
  必需利用断开毗连的纪录集。
  假如不克不及包管满意这两个请求,请不要缓存ADO纪录集。鄙人面的非天真组件和不要缓存毗连技能中,我们将会商在Application或Session感化域中存储COM工具的伤害。
  假如在Application或Session感化域中存储数据,这些数据将一向保存在那儿,直到在程序中改动它、Session过时或Web使用程序从头启动时为止。数据必要更新怎样处置?若要用手工强迫更新使用程序数据,能够挪用只同意办理员会见的数据更新ASP页。别的,还能够经由过程函数,周期地主动革新数据。上面的示例存储带缓存数据的工夫戳,在指准时间距离后革新数据。
  <%
  未显现毛病处置...
  ConstUPDATE_INTERVAL=300革新工夫距离,以秒计
  
  函数前往雇佣形态列表
  FunctionGetEmploymentStatusList
  UpdateEmploymentStatus
  GetEmploymentStatusList=Application("EmploymentStatusList")
  EndFunction
  
  按期更新缓存的数据
  SubUpdateEmploymentStatusList
  Dimd,strLastUpdate
  strLastUpdate=Application("LastUpdate")
  If(strLastUpdate="")Or_
  (UPDATE_INTERVALDateDiff("s",strLastUpdate,Now))Then
  
  注重:此处大概有两个或多个挪用。这是能够的,只不外
  发生几个不用要的取指令而已(就此有一个事情区)
  
  FetchEmploymentStatusList函数(不显现)
  从DB中取数据,前往一个数组
  d=FetchEmploymentStatusList()
  
  更新Application工具。用Application.Lock()
  来确保分歧的数据
  Application.Lock
  Application("EmploymentStatusList")=d
  Application("LastUpdate")=CStr(Now)
  Application.Unlock
  EndIf
  EndSub
  %>
  其他示例,请参阅具有Application数据的最快列表框(英文)。
  请注重,在Session或Application工具中缓存年夜型数组并不是下策。在会见数组元素之前,剧本言语的语法请求创建全部数组的一时正本。比方,假如在Application工具中缓存了将美国邮政编码映照到当地景象站的字符串数组,该字符串数组有100,000个元素,ASP在找出一个字符串之前,必需将一切100,000个景象站复制光临时数组中。在这类情形下,创建带自界说办法的自界说组件,来存储景象站-或利用一个字典组件,大概更好。
  请不要在倒沐浴水时把孩子一同倒失落,对这类概念的一个新的注解是:数组供应了对内存中相邻关头-数据对的疾速查找和存储。索引字典比索引数组要慢。您应当依据详细情形选择可以供应最好功能的数据布局。问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.

因胸联盟 发表于 2015-1-18 21:23:25

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

乐观 发表于 2015-1-25 09:54:04

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

小魔女 发表于 2015-2-2 21:37:42

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

再现理想 发表于 2015-2-8 06:38:05

掌握asp的特性而且一定要知道为什么。

兰色精灵 发表于 2015-2-24 22:14:23

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

小女巫 发表于 2015-3-7 13:56:57

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

金色的骷髅 发表于 2015-3-15 07:39:13

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

莫相离 发表于 2015-3-21 23:15:47

掌握asp的特性而且一定要知道为什么。
页: [1]
查看完整版本: ASP网页编程之ASP技能集锦(官方威望版)-1