论文部分内容阅读
摘要:随着互联网的发展,Web数据库的应用越来越广泛,用户对访问Web数据库页面的速度的要求也越来越高。访问Web页面的速度取决于很多因素,主要取决于网络的速度、Web页面所在服务器的性能、Web页面本身的设计以及web数据库设计等多方面原因。本文主要从WEB页面设计这一方面介绍基于ASP的动态网站优化策略。
关键词: ASP;WEB数据库;动态网站;静态网站;查询优化
中图分类号:TP393文献标识码: A文章编号:1009-3044(2007)15-30669-02
ASP-based Dynamic Website Optimization Strategy
Chen Shi-bao
(Modern Education Technology Center of Anhui Finance and Trade Vocational College, Hefei 230601,China)
Abstract:With the development of the Internet, web database is becoming more and more widely used . Meanwhile, the users have a growing demand of the speed ofvisiting the database web pages ,which is decided by many factors, which mostly depends on the speed of network, web host server performance, the design of web page itself and web database, and many other reasons. This paper gives some introduction aboutthe ASP-based dynamic website Optimization Strategies mainly from the aspect of web page design.
Key words:ASP;WEB database;dynamic website;static website;query optimization
1 引言
在InterNet迅猛发展的今天,用户不再只满足于通过浏览器看到静态页面,而是希望能根据要求生成更加灵活、
生动的动态页面。数据库对于信息的动态检索无疑具有极大的优越性,因此根据数据库信息的不断变化生成动态web页面将成为网页设计的重要方法,动态网页技术与数据库结合成为了必然,ASP技术加数据库是目前应用最广泛的一种。然而,随着网络上信息数量的膨胀和人们对信息需求量的增加,因此用户对访问WEB数据库页面速度的要求也必然越来越高。对WEB页面的优化可以显著地提高Web数据库的访问速度。
2 Web页面设计的优化
2.1动态页面静态化
用户访问静态Web页面时,Web服务器只需简单地将该页面传回给用户浏览器,由浏览器解释执行;而用户访问“动态”Web页面时(含服务器端执行程序),Web服务器需要先解释执行该页面,将嵌入在页面中的服务器端执行代码在服务器端执行完毕,并将执行结果形成一个“静态”的Web页面传回给用户浏览器,再由浏览器解释执行。
在Web数据库应用系统中,当用户访问Web数据库页面时,Web服务器需要先与数据库服务器交换信息,从数据库中动态地读取数据并形成一个“静态”的Web页面传回用户浏览器端,再由浏览器解释执行。
基于Web页面的上述执行过程,如果把“从数据库中动态读取数据”只执行一次并形成一个“静态”的HTML代码段,在需要从数据库中动态读取数据的页面中插入该段代码,就能减少访问数据库的开销,从而提高访问该页面的速度,其原理类似于程序的一次编译、多次执行。
编程实例:下面以火车订票系统为例来说明该方法的具体实现过程。火车订票系统中站名、车次、各停站及其停车时间等数据被设计存放在数据库中。由于车次、站名的增减、停车时间的变更等信息不会频繁地发生变化,具有相对的稳定性,所以可以在数据需要变更时由系统管理员一次性执行一段代码,从数据库中提取数据并生成若干HTML代码的“静态”引用文件,供需要站名、车次、停站、停车时间的各个Web页面引用。只有到下次铁路系统再次调整时间、车次等信息时,系统管理员才有必要修改数据库中的数据,重新生成并覆盖原有的HTML代码“静态”引用文件,而引用该“静态”代码的各个Web页面则无需任何修改。
下面以其中“站名”为例,说明“静态”代码的生成以及各Web页面对此“静态”代码的引用方法。设系统采用Access数据库train.mdb,表名为tab_train,“站名”字段为stations。首先从数据库中读取“站名”并生成“静态”HTML代码的ASP程序,然后把生成的“静态”代码保存到文件stations.inc中。
/*make_stations.asp*/
<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")
FilePath = Server.MapPath(“station.inc”)
Set file = fso.CreateTextFile(FilePath)
Set conn = server.CreateObject(“ADODB.Connection”)
DBPath = Server.MapPath(“train.mdb”)
conn.Open “driver={Microsoft Access Driver (*.mdb)}; dbq=”& DBPath
sql = “select stations from tab_train”
Set rs = conn.Execute(sql)
line = “function put_stations(){”
file.WriteLine line
line = “document.writeln(‘ ” & “ <select name = ‘stations’ >’)”
file.WriteLine line
While Not rs.EOF
line = “document.write(‘<option >” & rs(“stations”) & “</option>’)”
file.WriteLine line
rs.MoveNext
Wend
line = “document.write(‘</select>’) }”
file.WriteLine line
file.close
%>
引用“静态”的“站名”的HTML页面如下:
< html >
< head >
< title >引用stations.inc文件</title>
< !--include file=“stations.inc”-- >
< /head >
< body >
< table >
< tr >< td >
< script language=“javascript”> put_stations() < /script >
< /td >< /tr >
< /table >
</body>
</html>
2.2 WEB页面查询优化
动态网站的核心是数据库,而动态网站的交互性就体现在根据用户的请求查询数据库从而将执行结果形成一个Web页面传回给用户浏览器解释执行,因此动态网站的实质就是不停的对数据库进行操纵(包括查询,更新,删除和插入,在这四中操纵方式中以查询为主),对WEB页面中查询进行优化也可以极大的提高Web数据库的访问速度。
一个查询往往有许多实现办法,然而不同的办法查询效率是不一样的,因此要找出一个与之等价的且查询效率最高的表达式。显然,笛卡尔积、连接运算最费时间和空间,究竟应采用什么样的策略,能够节省时间和空间,这就是优化的准则。
2.2.1 提前执行选择运算。对于有选择运算的表达式,优化的原则是尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量。
2.2.2 合并乘积与其后的选择运算为连接运算。在表达式中,当乘积运算后面是选择运算时,应该合并为连接运算,使选择和乘积一道完成,以避免做完乘积后, 再对一个大的乘积关系进行选择运算。
2.2.3 将投影运算与其后的其他运算同时进行。以避免重复扫描关系。
2.2.4 将投影连接和其前后的二目运算结合起来,使得没有必要为去掉某些字段再重复扫描一遍关系。
2.2.5 在执行连接前对关系做适当的预处理。连接运算的执行效率比较低,其结果往往是产生的更大的关系。
3 结语
以上是笔者在实际工作中、在不增加投入的情况下,为改进WEB网站的访问速度而总结出来的。动态页面静态化实际上是采用了生成“函数”的方法,这样设计的好处:一是可以在其他页面的任何布局位置上引用该“函数”,二是增加执行效率。 WEB页面查询优化主要是对WEB页面中的查询语句进行优化,以增加查询效率。
参考文献:
[1]王亚平.数据库系统工程师教程[M].北京:清华大学出版社.2004.7 .339-369
[2]王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社.1998.7
[3]汪晓平,钟军.ASP网络开发技术[M](第二版).北京:人民邮电出版社. 2003.12
关键词: ASP;WEB数据库;动态网站;静态网站;查询优化
中图分类号:TP393文献标识码: A文章编号:1009-3044(2007)15-30669-02
ASP-based Dynamic Website Optimization Strategy
Chen Shi-bao
(Modern Education Technology Center of Anhui Finance and Trade Vocational College, Hefei 230601,China)
Abstract:With the development of the Internet, web database is becoming more and more widely used . Meanwhile, the users have a growing demand of the speed ofvisiting the database web pages ,which is decided by many factors, which mostly depends on the speed of network, web host server performance, the design of web page itself and web database, and many other reasons. This paper gives some introduction aboutthe ASP-based dynamic website Optimization Strategies mainly from the aspect of web page design.
Key words:ASP;WEB database;dynamic website;static website;query optimization
1 引言
在InterNet迅猛发展的今天,用户不再只满足于通过浏览器看到静态页面,而是希望能根据要求生成更加灵活、
生动的动态页面。数据库对于信息的动态检索无疑具有极大的优越性,因此根据数据库信息的不断变化生成动态web页面将成为网页设计的重要方法,动态网页技术与数据库结合成为了必然,ASP技术加数据库是目前应用最广泛的一种。然而,随着网络上信息数量的膨胀和人们对信息需求量的增加,因此用户对访问WEB数据库页面速度的要求也必然越来越高。对WEB页面的优化可以显著地提高Web数据库的访问速度。
2 Web页面设计的优化
2.1动态页面静态化
用户访问静态Web页面时,Web服务器只需简单地将该页面传回给用户浏览器,由浏览器解释执行;而用户访问“动态”Web页面时(含服务器端执行程序),Web服务器需要先解释执行该页面,将嵌入在页面中的服务器端执行代码在服务器端执行完毕,并将执行结果形成一个“静态”的Web页面传回给用户浏览器,再由浏览器解释执行。
在Web数据库应用系统中,当用户访问Web数据库页面时,Web服务器需要先与数据库服务器交换信息,从数据库中动态地读取数据并形成一个“静态”的Web页面传回用户浏览器端,再由浏览器解释执行。
基于Web页面的上述执行过程,如果把“从数据库中动态读取数据”只执行一次并形成一个“静态”的HTML代码段,在需要从数据库中动态读取数据的页面中插入该段代码,就能减少访问数据库的开销,从而提高访问该页面的速度,其原理类似于程序的一次编译、多次执行。
编程实例:下面以火车订票系统为例来说明该方法的具体实现过程。火车订票系统中站名、车次、各停站及其停车时间等数据被设计存放在数据库中。由于车次、站名的增减、停车时间的变更等信息不会频繁地发生变化,具有相对的稳定性,所以可以在数据需要变更时由系统管理员一次性执行一段代码,从数据库中提取数据并生成若干HTML代码的“静态”引用文件,供需要站名、车次、停站、停车时间的各个Web页面引用。只有到下次铁路系统再次调整时间、车次等信息时,系统管理员才有必要修改数据库中的数据,重新生成并覆盖原有的HTML代码“静态”引用文件,而引用该“静态”代码的各个Web页面则无需任何修改。
下面以其中“站名”为例,说明“静态”代码的生成以及各Web页面对此“静态”代码的引用方法。设系统采用Access数据库train.mdb,表名为tab_train,“站名”字段为stations。首先从数据库中读取“站名”并生成“静态”HTML代码的ASP程序,然后把生成的“静态”代码保存到文件stations.inc中。
/*make_stations.asp*/
<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")
FilePath = Server.MapPath(“station.inc”)
Set file = fso.CreateTextFile(FilePath)
Set conn = server.CreateObject(“ADODB.Connection”)
DBPath = Server.MapPath(“train.mdb”)
conn.Open “driver={Microsoft Access Driver (*.mdb)}; dbq=”& DBPath
sql = “select stations from tab_train”
Set rs = conn.Execute(sql)
line = “function put_stations(){”
file.WriteLine line
line = “document.writeln(‘ ” & “ <select name = ‘stations’ >’)”
file.WriteLine line
While Not rs.EOF
line = “document.write(‘<option >” & rs(“stations”) & “</option>’)”
file.WriteLine line
rs.MoveNext
Wend
line = “document.write(‘</select>’) }”
file.WriteLine line
file.close
%>
引用“静态”的“站名”的HTML页面如下:
< html >
< head >
< title >引用stations.inc文件</title>
< !--include file=“stations.inc”-- >
< /head >
< body >
< table >
< tr >< td >
< script language=“javascript”> put_stations() < /script >
< /td >< /tr >
< /table >
</body>
</html>
2.2 WEB页面查询优化
动态网站的核心是数据库,而动态网站的交互性就体现在根据用户的请求查询数据库从而将执行结果形成一个Web页面传回给用户浏览器解释执行,因此动态网站的实质就是不停的对数据库进行操纵(包括查询,更新,删除和插入,在这四中操纵方式中以查询为主),对WEB页面中查询进行优化也可以极大的提高Web数据库的访问速度。
一个查询往往有许多实现办法,然而不同的办法查询效率是不一样的,因此要找出一个与之等价的且查询效率最高的表达式。显然,笛卡尔积、连接运算最费时间和空间,究竟应采用什么样的策略,能够节省时间和空间,这就是优化的准则。
2.2.1 提前执行选择运算。对于有选择运算的表达式,优化的原则是尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量。
2.2.2 合并乘积与其后的选择运算为连接运算。在表达式中,当乘积运算后面是选择运算时,应该合并为连接运算,使选择和乘积一道完成,以避免做完乘积后, 再对一个大的乘积关系进行选择运算。
2.2.3 将投影运算与其后的其他运算同时进行。以避免重复扫描关系。
2.2.4 将投影连接和其前后的二目运算结合起来,使得没有必要为去掉某些字段再重复扫描一遍关系。
2.2.5 在执行连接前对关系做适当的预处理。连接运算的执行效率比较低,其结果往往是产生的更大的关系。
3 结语
以上是笔者在实际工作中、在不增加投入的情况下,为改进WEB网站的访问速度而总结出来的。动态页面静态化实际上是采用了生成“函数”的方法,这样设计的好处:一是可以在其他页面的任何布局位置上引用该“函数”,二是增加执行效率。 WEB页面查询优化主要是对WEB页面中的查询语句进行优化,以增加查询效率。
参考文献:
[1]王亚平.数据库系统工程师教程[M].北京:清华大学出版社.2004.7 .339-369
[2]王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社.1998.7
[3]汪晓平,钟军.ASP网络开发技术[M](第二版).北京:人民邮电出版社. 2003.12