Interspersing ASP and HTML每个人都这样做?当我们输出表格的时候,我们会在ASP 和HTML代码间转换,而这是一个不好的习惯。
例如:
<HTML>
<BODY>
<% Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("sample.mdb") MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM Friends"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF %>
<LI><%=RS("Name")%>: <A HREF="">Homepage</A>
<% RS.MoveNext
WEND %>
</BODY>
</HTML>
另一个普遍的例子是使用IF语句的时候:
<%If Not Session("DBOpen") Then%><H1>Database not connected</H1><%Else%><H1>Database open</H1><%End If%>
在这些情况下,脚本性能能通过将服务器端脚本写到一起来,而用Response.write产生Html代码来提高性能。
比如:
<%If not Session ("DBOpen") ThenResponse.Write "<H1>Database not connected</H1>"ElseResponse.Write "<H1>Database open</H1>"End If%>
在大的脚本和很多脚本的情况下,你将能看到性能的提高。
注意这里尽量避免了使用<%标记,这样就能提高性能,ASP不需在执行脚本的时候计算字符的Ascii码。
Session状态无庸置疑地,在Asp中能够通过Session维持某个状态的能力是十分强大的特色。
然而,它会影响你的性能。
明显地,你的站点的可伸缩性性变成了另一个问题,如果限制Session的使用的话。
然而,session会为每个用户消耗服务器资源。
如果你不使用session 变量,或事实上你不必使用?使用隐藏表单域,在数据库中保存数据,查询字符串是不是其中的窍门?所以你应该禁止Session状态。
你可以使用下面的声明禁止使用session:
@EnableSessionState = False
这样,ASP将不再检查session信息。
如果你不得不依赖于session状态,应该避免在session对象中存放大量的数据。
IIS中的session在客户端的HTTP cookie可用的时候就会保持,导致被session占用的内存在session 终止或超时前一直被占用。
这样,如果很多用户同时使用你的程序的时候,你的服务器资源可能会耗尽。
数据库访问数据库访问是必须的麻烦?访问数据库将会激烈地减慢你的程序,但很显然,如果没有数据库,很多站点将变得毫无价值可言。
但通过存储过程访问数据库来代替使用嵌入式Sql 语句,你可以提升潜在的性能。
通过使用存储过程和ActiveX Data Objects (ADO),它们亦同样拥有良好的灵活性。
尽可能从存储过程来输出数据。
确认你的数据库具有索引,因为这样能直接提高你的程序的效率。
同样,尽量在你的数据库服务器运行更新统计(Update Statistics) 以帮助追踪你的数据分发,这样,你的数据库就能够基于这些信息来改造查询执行。
注意一些数据库比如MS Access,是不是真正能在企业级程序中接受?SQL Sever 7.0或者Oracle是一个更好的赌注。
让SQL象它被设计的那样工作,它能count(统计),连接(join),排序(sort)和group 数据。
当你能够写出一个查询语句来做这些东西的时候,就不要自己用其它语言来实现。
下面是一个统计所有列的最简单的语法:
SELECT count(*) FROM publishers WHERE state=''NY''
如果你统计一个指定的列,你必须使用group by语句来分组该列,否则它不会工作:
SEL