以Apache服務(wù)器為例 詳解動態(tài)網(wǎng)站訪問
目前來說,網(wǎng)站頁面主要分為靜態(tài)頁面和動態(tài)頁面,純靜態(tài)頁面組成的網(wǎng)站現(xiàn)在相對比較少見,大型網(wǎng)站一般使用的是動態(tài)網(wǎng)站建站技術(shù),還有一部分網(wǎng)站是靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁共存,本文以Apache服務(wù)器、php語言為例,詳解動態(tài)網(wǎng)站的訪問過程,下面直接切入本文主題。

(1)用戶端訪問服務(wù)器端的html文件
S1:通過本機配置好的DNS域名服務(wù)器地址尋找DNS服務(wù)器,將網(wǎng)站URL中的Web主機域名解析為Web服務(wù)器所在的Linux操作系統(tǒng)(Apache通常與Linux操作系統(tǒng)組合使用)中對應(yīng)的IP地址。
S2:通過HTTP協(xié)議(超文本傳輸協(xié)議)去連接上述IP地址的服務(wù)器系統(tǒng),通過默認80端口(默認的端口是80,也有其他端口,輸入URL時一般不用輸入端口)請求Apache服務(wù)器上相應(yīng)目錄下的html文件(如index.htm)。
S3:Apache服務(wù)器收到用戶的訪問請求后,在它管理的文檔目錄中找到并打開相應(yīng)的html文件(如index.htm),將文件內(nèi)容響應(yīng)給客戶端瀏覽器(即用戶)。
S4:瀏覽器收到Web服務(wù)器的響應(yīng)后,接收并下載服務(wù)器端的html靜態(tài)代碼,然后瀏覽器解讀代碼,最終將網(wǎng)頁呈現(xiàn)出來(由于不同的瀏覽器對于代碼的解讀規(guī)則會不一樣,所以不同瀏覽器對于相同的網(wǎng)頁呈現(xiàn)的最終頁面效果會有所差異)。
(2)用戶端訪問服務(wù)器端的php文件
S1:該步與上面訪問html靜態(tài)網(wǎng)頁是一樣的,通過DNS服務(wù)器解析出相應(yīng)的Web服務(wù)器的IP地址。
S2:與上面訪問html靜態(tài)頁面相似,不過最后請求的是Apache服務(wù)器上相應(yīng)目錄下的php文件,如index.php。
S3:Apache服務(wù)器本身不能處理php動態(tài)語言腳本文件,就尋找并委托PHP應(yīng)用服務(wù)器來處理(服務(wù)器端事先得安裝PHP應(yīng)用服務(wù)器),Apache服務(wù)器將用戶請求訪問的php文件(如index.php)文件交給PHP應(yīng)用服務(wù)器。
S4:PHP應(yīng)用服務(wù)器接收php文件(如index.php),打開并解釋php文件,最終翻譯成html靜態(tài)代碼,再將html靜態(tài)代碼交還給Apache服務(wù)器,Apache服務(wù)器將接收到的html靜態(tài)代碼輸出到客戶端瀏覽器(即用戶)。
S5:與上面訪問html靜態(tài)頁面相同,瀏覽器收到Web服務(wù)器的響應(yīng)后,接收并下載服務(wù)器端的html靜態(tài)代碼,然后瀏覽器解讀代碼,最終將網(wǎng)頁呈現(xiàn)出來。
(3)用戶端訪問服務(wù)器端的MySQL數(shù)據(jù)庫
如果用戶需要對MySQL數(shù)據(jù)庫中的數(shù)據(jù)進行操作,那么就需要在服務(wù)器端安裝數(shù)據(jù)庫管理軟件MySQL服務(wù)器,用來存儲和管理網(wǎng)站數(shù)據(jù)。由于Apache服務(wù)器是無法連接和操作MySQL服務(wù)器,所以還需要安裝php應(yīng)用服務(wù)器,這樣Apache服務(wù)器就委托php應(yīng)用服務(wù)器去連接和操作數(shù)據(jù)庫,在對數(shù)據(jù)庫中的數(shù)據(jù)進行管理的時候,一般都需要用到結(jié)構(gòu)化查詢語句,即SQL語句。
S1:該步與上面訪問php文件一樣,通過DNS服務(wù)器解析出相應(yīng)的Web服務(wù)器的IP地址。
S2:與上面訪問php文件一樣,請求訪問Apache服務(wù)器上相應(yīng)目錄下的php文件。
S3:與上面訪問php文件一樣,PHP應(yīng)用服務(wù)器接收Apache服務(wù)器的委托,收到相應(yīng)的php文件。
S4:PHP應(yīng)用服務(wù)器打開php文件,在php文件中通過對數(shù)據(jù)庫連接的代碼來連接本機或者網(wǎng)絡(luò)上其他機器上的MySQL數(shù)據(jù)庫,并在php程序中通過執(zhí)行標準的SQL查詢語句來獲取數(shù)據(jù)庫中的數(shù)據(jù),再通過PHP應(yīng)用服務(wù)器將數(shù)據(jù)生成html靜態(tài)代碼。
S5:瀏覽器收到Web服務(wù)器的響應(yīng)后,接收并下載服務(wù)器端的html靜態(tài)代碼,然后瀏覽器解讀代碼,最終將網(wǎng)頁呈現(xiàn)出來。
需要注意的是,文中(2)與(3)的區(qū)別是,一個訪問了數(shù)據(jù)庫,另一個沒有訪問數(shù)據(jù)庫,所以在過程中有點差別。