- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
|
ASP页面中能够包含单独的文件,而文件中包含脚本代码,这对编写可用于其他网页的通用函数是非常方便的。用这种方法,改变这个文件中的脚本代码,则包含这个文件的所有脚本在执行时都自动做相应的改变。为了包含单独的脚本文件,可使用<SCRIPT>元素的S R C属性,以指定相对的、物理的或虚拟的路径和文件名。
, b5 u$ m* u5 c/ \ P
, D% F# n' h/ c; s: ?" i) m 这个单独的文件必须仅包含有效的脚本代码,不能包含原有页面内容如文本或HTML。假如使用这个技术,其他的代码不能放在<SCRIPT>元素内,它必须是空的。如果要为页面增加其他脚本,需使用另外一个<SCRIPT>元素或者由< % . . . % >分隔的脚本。7 D( p2 R5 \& k# u6 f
也可以包含来自包含脚本、文本或HTML的文件的文本,通过使用服务器端包含( Server-Side Include,SSI )指令可以实现这一点。在第4章中将研究这个问题。
) a+ J3 Z, s; u* O0 J 2. 定义脚本语言
. S. K( l1 ]! ?8 B# b3 b% x) b ASP有两个脚本引擎: VBScript和JScript。安装ASP时这两个脚本引擎已缺省安装。也有由其他应用程序使用的脚本引擎,如微软的Internet Explorer Web 浏览器和Windows Scripting Host。在Windows 2000中该浏览器的目前版本是5.0,可能还有新的升级版本。还有其他的脚本引擎,如TCL和PerlScript (一种ActiveX脚本解释器而非传统的基于CGI的Perl )。! R5 z7 \% S$ Z3 t( u
因此必须告诉ASP,ASP页用什么引擎。通常使用的方法是用特定的环境声明元素中定义引擎,这必须放在文件的第一行,并只能定义一次。这个元素一般用在ASP代码分隔符后面跟着字符@来表示:; A E( \ j0 f( P
5 a( F5 P. d$ @$ \% G# R; {4 [
这个定义行还可包含其他的定义内容,在本章后面能看到相关内容。定义一个用VBScript编码的页面,如下所示:0 q' V2 |: v# c- p+ d4 o' C9 L
<%LANGUAGE="VBScript"%>
- I+ _8 j1 n8 T+ } 对于JScript 引擎,使用:
6 F) }# T7 n/ j0 k% X; N <%@LANGUAGE="JScript"%>
9 {& u" y- c( ?1 K6 @ 经过上述定义,在< % . . . % >段内的页面的所有代码将被送至定义元素所定义的脚本引擎。对于这种代码分隔方式,这是指定脚本语言的唯一方法。
' t' |3 [4 h8 _ 然而,使用<SCRIPT>定义元素,可以单独定义每一段的脚本语言,如果需要的话在同一页面上可使用不止一种脚本语言:
4 S+ }+ M8 ]+ Z8 N" C
( w; d6 V* K. M$ J 不像在客户端,在注释元素内不需要隐藏脚本代码,因为当它执行时,代码将从页面移走,取而代之的仅是输出结果。在客户端查看ASP页(在浏览器中选择View Source)时,只能看到文本、HTML和其他客户端脚本代码。所有的服务器脚本都被执行,只有结果被送到客户端。
7 C3 e( N% A; I( ?% Q0 S, G0 S 缺省的脚本语言7 X1 ~, ^5 h3 X4 q- N6 H
当没有指定ASP页的脚本语言或没有单独的<SCRIPT>元素时, ASP将使用缺省的脚本引擎。首次安装IIS时,缺省的脚本语言是VBScript。但对于整个Web站点或者一个站点内的独立的虚拟应用程序,根据需要可相应改变设置。7 P, B% y6 C8 U8 C- U: i) E% z3 W
在本章前面提到的Application Configuration对话框中,有一个App Options选项卡包含了设置缺省语言的文本框,如图1 - 6所示。0 a/ \* ?- M8 j4 \, k1 e: Z0 {0 E
缺省语言也可在IIS里通过编辑Active Directory段的值来改变设置。在Internet Services Manager MMC插件中所能见到的设置,都存放在Windows 2000中的Active Directory中,只要有相应的权限就可以进行读取和编辑。本书将在后面章节详细介绍Active Directory。
" W& n$ ^8 ^ G( |* c1 N, E4 b1 x 除此以外,可根据个人喜好选择脚本语言。假如读者认为一种语言很好,可一直坚持使用它。因为所有的ASP代码都在服务器端执行而不用担心浏览器的兼容性问题。假如读者精通VBScript和JScript或者其他的语言,可根据需要选择最合适的一种。然而因为VBScript各个版本的功能不断扩充(例如VBScript 5.0现在支持正规表达式),通常会选择VBScript。其对类型和语法的要求不是很高,并且有更简单的多语句结构,因此是一种容易使用的工具。, M) Y2 |4 |0 H3 l/ @! ~
0 s6 l% B* f; Y 3. 脚本性能问题
7 ]# [; H3 }5 k, q% H: j7 O- v 一般来说,Web服务器处理器的速度是足够满足使用的(除非特别繁忙的站点),因为它们的主要任务是从磁盘中载入页面并发往客户端。因此,每个页面的请求结果都使处理器等待磁盘。这意味着执行ASP脚本通常对性能的影响非常小。而且如果在一个页面上某段脚本代码多次执行,而这段代码的已编译版本已被高速缓存,那么只须执行它,而不必多次编译,这样对性能的影响就更小了。
. J4 j8 d4 |+ s! y' y 当然,随着请求数量的增加,服务器负载也不断增加,解析和执行每个ASP页面就有相应的代价。应尽可能压缩ASP解释器的工作量。下面是一些有用的提示。
" a `- V$ I- ]% N# o (1) 避免在同一页面上混用脚本语言
, @7 { |4 t! R/ O0 k; z! O. y) o2 C9 n 如果同一页面上有几种脚本语言, ASP不得不一个接一个地加载多种脚本引擎,并把相应的代码送给相应的引擎。这将降低处理速度,增加内存使用量。另外一个副作用是,假如编写的是一个顺序执行的代码(而不是一系列从其他代码段调用的函数或子程序),可能会以与它们在页面中出现的顺序不同的顺序执行。+ t: m% d& o" n2 n( I+ c0 Y( @
例如,下面的代码可能不会产生所希望的结果,因为无法确保JScript代码的结果在网页中是首先出现,或是在第三位出现。
0 Q$ G+ I4 ?( Y- p; Z
) W) n( l" D# h - |2 S8 e6 a1 k0 l: d. J$ r$ J
(2) 在脚本和其他内容中避免过多的环境切换$ G, X; M9 ~4 S9 W: W t1 e" f4 w
每当ASP遇到一个脚本段,必须执行并把结果发到IIS,然后再次返回去解释页面。因此,使用Response.Write语句(只创建发往客户端的文本,类似于Print命令行)能使页面的效率更高。例如下面这段VBScript:
+ J7 \ Z5 z4 p5 H3 c4 M9 A
- b3 x- H7 f. u! G (3) 构建单独的组件
, G( `$ J n7 x1 }4 U 假如在一个页面不得不做大量的运算,或者运行一个过于复杂的脚本,通常的好办法是构建一个组件,并安装在Web服务器上。组件通常是编译过的可执行代码,相对于解释ASP脚本代码,使用的效率更高。本书后面将探讨构建组件的问题。 |
|