| 導購 | 订阅 | 在线投稿
分享
 
 
 

用實例來說明如何優化Web數據庫頁面

來源:互聯網  2008-05-19 04:14:51  評論

隨著互聯網的發展,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數據庫的訪問速度。當然,對需要反映數據庫中當前數據狀態的查詢統計頁面是不能進行「靜態」優化的。

  隨著互聯網的發展,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數據庫的訪問速度。當然,對需要反映數據庫中當前數據狀態的查詢統計頁面是不能進行「靜態」優化的。      
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有