作为一个ASP程序员,你不会怀疑提高Web应用程序性能的重要性。为了让程序运行的更快一些,你可能一直忙于优化数据库或COM组件。如果这些你都做过了,你想到过靠加快最终生成HTML代码在浏览器中的显示速度来提高性能吗?对于最终用户来说,如果页面能显示的更快,你就能赢得更多的赞誉。 提高HTML在浏览器中显示的速度可以通过一些鲜为人知的技术来实现。 ( {* p\" P0 G3 W
1.使用表格嵌套?
5 y& V% x$ q8 b$ r( z- M 在页面中建立复杂的结构,一般通过在页面中放置HTML表格来实现。如果要建立一个这样的页面:这个页面有一个顶部导航栏一个左边导航栏,一个右边的内容区。可以用一个两行两列的大表格来建立它。第一行中,合并两个列,然后插入一个顶部导航栏。第二行左边的列中,插入一个表格来显示导航按钮。右边的栏中,放置一个表格来实际内容。(见图一)这样嵌套的表格生成的代码是这样的: ! n\' I; U4 _ ^
<TABLE BORDER=\"0\">
. a8 p$ k\' ?* Z# Z <TR>
0 K\" `( f2 ?; e0 k& F# G <TD COLSPAN=\"2\"><!-- content for top nav bar --></TD> ) z9 z% J\" ^5 ~+ k7 }
</TR> ! g! R8 Z2 p; Q) ~. [ H* V
<TR>
% A f3 a: U* S; S, n& | <TD ALIGN=\"LEFT\" VALIGN=\"TOP\"><!-- content for left nav bar --></TD>
2 q6 G1 ]: e( s9 C0 [* A <TD ALIGN=\"LEFT\" VALIGN=\"TOP\"><!-- content for body of page --></TD>
- o\' m5 B U3 j+ z1 ? </TR> \" @. |. ^! F( @, U6 e* p
</TABLE>
3 M4 Y5 W! ?6 h( v, \\$ E* i 但是,实际上,浏览器找到<TABLE>标签的时候并不是立刻把页面显示到屏幕上,除非它找到相应的结束标签</TABLE>。所以,如果你的整个页面在一个表格里的话,在收到最后一个</TABLE>之前,什么也不会显示出来,这样,这个页面将在整个文件全部下载以后才能被用户所看到。在页面数据量比较大的时候(比如搜索引擎的搜索结果),这个特性会导致暂时的停顿。为了防止出现这种情况,可以在制作的时候把页面分成许多小的表格。在每一个<TABLE>到相应的</TABLE>这一部分HTML代码下载完的时候,浏览器就会把它显示出来。在访问者看来页面是渐渐的,一部分一部分,越来越多的出现在屏幕上的。感觉上,这样的页面显示速度比下载完整个文件再一次显示出来更快。 . R* a. d& Y1 Y\" Q
按照这个原则来研究前面的例子,应该把页面中整个的大表分成三个单独的表。用第一个表显示顶部的导航栏,调节它的宽度,使它足够容纳所有的内容,在一个<TABLE></TABLE>代码段中完成它。页面下半部分,左边第二个表排成一列。使用第三个表容纳实际内容。(见图二)因为每一个部分都是一个完整的表格,所以,每一部分代码下载后都会立刻被显示出来。这样,顶部和左边的导航栏将比页面的其它部分更显显示出来。用户会在这个时候想象页面开始下载,很快就能显示在屏幕上。这样比起让用户在较长时间内一直面对一个空白屏幕要好得多。
3 o# U: i; f* Z( z( l) O 修改过的代码是这样的:
- b8 Q, z; I$ F- }3 D% ] <TABLE BORDER=\"0\" WIDTH=\"100%\"> \' E& L9 n$ u7 v9 I: v4 c! ?\' v
<TR> , c& e5 A$ I/ a& z- o! B0 @# ^
<TD ALIGN=\"CENTER\" VALIGN=\"TOP\"><!-- content for top nav bar --></TD>
; H4 K4 Q- Q/ d4 a </TR>
\" Z+ t/ _8 l! O* k# p1 w </TABLE>
/ ]& \\: y4 O/ o/ C5 P\" _ <TABLE BORDER=\"0\" ALIGN=\"LEFT\"> 2 X/ W% w! F7 \\2 y
<TR>
8 q- Q\" g; W: e3 f4 `! s <TD ALIGN=\"LEFT\" VALIGN=\"TOP\"><!-- content for left nav bar --></TD> 9 {/ @\" U! A4 i7 y9 |6 K
</TR>
, r; h\' c( V! E\' O </TABLE> % L- c% v. Q6 @2 F# s: t9 ?
<TABLE BORDER=\"0\"> 1 ^! q2 N% H2 U$ l) ^6 q9 ]6 S
<TR>
\' f\" E$ L8 B! k% q4 h6 a <TD ALIGN=\"LEFT\" VALIGN=\"TOP\"><!-- content for page body --></TD> * T\" X\" [2 X$ q! C5 M0 o
</TR>
: ]. `* S A+ ?9 T% p- V$ r </TABLE>
5 |9 e2 y, j0 H$ V2 {\' h 2.也要记住关闭其他的标记 * u\' i0 H& |; l& F) Y- g# P\" Y
在上面的例子中,我们仅仅早一些关闭<TABLE>标记,就能让页面在浏览器显示的更快些。以此类推,还有一些类似的标记也有同样的特性。 6 E2 e! z0 {; w% B
比如产生列表框和组合框<OPTION>标记和产生列表项的<LI>标记。通常,ASP程序员存取数据库,并把数据送入通过<OPTION>建立的列表框或组合框中,这时候在代码中写上一个关闭<OPTION>标记,这样简单的改变也能使页面在浏览器中显示的更快。 6 _) C) f5 d% b l: o9 S. c
不要使用这样的代码: , Z# g0 J& U7 r2 l d
Do while not objRS.EOF
- i# X/ y& `% f& f, x4 i. _ strOptionList = strOptionList & \"<OPTION VALUE=\"\"\" & objRS(\"ID\") &_\"\"\">\"& _objRS(\"ProductName\") 9 j\' {: o. z6 e\' S+ x/ L1 W
objRS.MoveNext 2 T. _2 @\' q( w* R
Loop
. _( t6 b2 M: h/ y Response.Write \"<SELECT SIZE=\"\"1\"\">\" & strOptionList & \"</SELECT>\"
- @. w8 s9 c- H; O+ k* G# O: b8 i6 x 要使用这样的代码:
: p# ]; Q- F5 Y* B5 g$ {9 y Do while not objRS.EOF 5 r# i& w9 A8 x0 M9 l5 g( z
strOptionList = strOptionList & \"<OPTION VALUE=\"\"\" & objRS(\"ID\") & _ \"\"\">\" & objRS(\"ProductName\") & \"</OPTION>\"
+ @0 q\' n6 B# U\" J, K( h+ B objRS.MoveNext
L) {9 I( d$ Y\" [/ \\$ [ Loop , D1 h/ C2 f2 G, }\' U s/ a( b
Response.Write \"<SELECT SIZE=\"\"1\"\">\" & strOptionList & \"</SELECT>\" & _7 R! r6 N. n) |
不要使用这样的代码: % ^, M. u7 s+ x* r u\' \\
<UL>
( p2 n2 e z( N) M\' _; ~ <LI>Apples
% i/ m f3 [. q: W4 B% j <LI>Oranges
4 u. v0 R. c+ f: G\' j <LI>Bananas \" l, K7 g$ J4 ~/ S( m9 @
</UL> 2 k1 V# a, f\" K# F1 C
使用这样的代码:
$ O. C* C$ x: ^7 Y6 O <UL> % v7 N7 }8 i9 \\; Q; F
<LI>Apples</LI> ) ^3 I7 ^& b( x, o9 Q3 @5 ? A& _
<LI>Oranges</LI>
4 ^/ h ]6 A, W\" t+ C) G) q <LI>Bananas</LI> 0 [\" c. `7 b( c\' q% z. O1 r
</UL> % F+ R5 N\' Z G8 Q\' C+ Y7 `+ v
现在看看,你的页面在浏览器中是不是显示的快了?
4 Y1 N/ n) o& q2 I# } 请不要轻视这些改变对提高ASP程序性能的重要性。也许,在你能找到的“技巧与提示”一类的书或在线资料中,很少提到过通过优化HTML代码来使你的程序运行的更快。但是,在实际中应用这些技术,确实能使程序性能得到很大的提高。
\' Z c\' o; |$ f9 N\' z- M7 c, T, H! y( ~, ?\" b5 d\" W8 F0 Q\' ~$ u/ w( v
推荐网站:中国培训财富网(http://www.training163.com/) |