台灣最大程式設計社群網站
線上人數
1862
 
會員總數:245964
討論主題:189547
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 優化Web資料庫頁面
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
優化Web資料庫頁面
價值 : 0 QP  點閱數:787 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
優化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資料庫的訪問速度。當然,對需要反映資料庫中目前資料狀態的查詢統計頁面是不能進行“靜態”優化的。



--------------------------------------------------------------------------------


本篇文章發表於2002-06-09 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.