随着互联网的发展,web数据库的应用越来越多,用户对访问web数据库页面的速度也要求越来越高。访问web页面的速度的快慢取决于网络的速度、web页面所在服务器的性能以及web页面本身的设计等多方面原因。 本文介绍一种根据笔者多年开发经验总结的优化web数据库页面的方法。
解决原理
用户访问静态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>
小 结
在make_stations.asp程序代码中,采用了生成“函数”的方法,这样设计的好处是可以在其他页面的任何布局位置上引用该“函数”。在稍复杂的web数据库应用系统中,一般都或多或少地存在着某些“不会频繁地发生变化,具有相对的稳定性”的信息,对这些信息进行“静态”优化,可以显著地提高web数据库的访问速度。当然,对需要反映数据库中当前数据状态的查询统计页面是不能进行“静态”优化的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器