動手
學習 xampp或者wamp 的簡單配置使用,在本地啟動 web 服務(wù)器,通過瀏覽器訪問,通過瀏覽器打開本地 webserver 下的 php 文件,截圖展示。



問題
1. 簡單描述下web 服務(wù)器、PHP、數(shù)據(jù)庫、瀏覽器是如何實現(xiàn)動態(tài)網(wǎng)站的?
- 瀏覽器訪問服務(wù)器端的html文件:
通過DNS服務(wù)器解析出相應(yīng)的Web服務(wù)器的IP地址。
通過HTTP協(xié)議連接上述的服務(wù)器系統(tǒng),請求相應(yīng)目錄下的html文件。
服務(wù)器接收到請求后,找到并打開相應(yīng)的html文件,將文件內(nèi)容響應(yīng)給客戶端瀏覽器。
瀏覽器收到響應(yīng)后,接收并下載服務(wù)器端的靜態(tài)html代碼,通過解析、渲染,呈現(xiàn)出網(wǎng)頁的內(nèi)容。 - 瀏覽器訪問服務(wù)端的php文件:
與訪問html靜態(tài)網(wǎng)頁一樣,通過DNS服務(wù)器解析出相應(yīng)的Web服務(wù)器的IP地址。
與請求html靜態(tài)頁面類似,不過最終請求的是php文件。
由于Apache服務(wù)器本身不能處理php動態(tài)語言腳本,所以Apache服務(wù)器將用戶請求訪問的php文件交給PHP應(yīng)用服務(wù)器。
PHP應(yīng)用服務(wù)器接收php文件,打開并解釋php文件,翻譯成html靜態(tài)代碼,再將這些html靜態(tài)代碼返回給Apache服務(wù)器,服務(wù)器接收到html靜態(tài)代碼后返回給瀏覽器。
瀏覽器接收到服務(wù)器的響應(yīng)后,接收下載html靜態(tài)代碼,解析、渲染呈現(xiàn)頁面。 - 瀏覽器訪問服務(wù)端的MySQL數(shù)據(jù)庫部分:
通過DNS服務(wù)器解析出相應(yīng)的Web服務(wù)器的IP地址。
與上面訪問php文件一樣,請求訪問Apache服務(wù)器上相應(yīng)目錄下的php文件。
與上面訪問php文件一樣,PHP應(yīng)用服務(wù)器接收到相應(yīng)的php文件。
PHP應(yīng)用服務(wù)器打開php文件,在php文件中通過執(zhí)行標準的SQL查詢語句來獲取數(shù)據(jù)庫中的數(shù)據(jù),在通過PHP應(yīng)用服務(wù)器生成html靜態(tài)代碼返回給服務(wù)器,服務(wù)器再返回給瀏覽器。
瀏覽器接收到服務(wù)器的響應(yīng)后,接收下載html靜態(tài)代碼,解析、渲染呈現(xiàn)出頁面。
2. 常見的 WEB 服務(wù)器有哪些?
- IIS:英文InternetInformationServer的縮寫。它是微軟公司主推的服務(wù)器。IIS的特點具有:安全性、強大、靈活。
- Tomcat:由Apache、Sun和其他一些公司及個人共同開發(fā)而成。Tomcat技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)者的認可,成為目前比較流行的Web應(yīng)用服務(wù)器。
- Zeus:是一個運行于Unix下的非誠優(yōu)秀的Web服務(wù)器,據(jù)說性能超過Apache,是效率最高的Web服務(wù)器之一。
- Nginx:不僅是一個小巧且高效的HTTP服務(wù)器,也可以做一個高效的負載均衡反向代理,通過它接受用戶的請求并分發(fā)到多個
Mongrel進程可以極大提高Rails應(yīng)用的并發(fā)能力。 - Apache:是世界排名第一的Web服務(wù)器軟件。它幾乎可以運行在所有的計算機平臺上。由于Apache是開源免費的,因此有很多人參與到新功能的開發(fā)設(shè)計,不斷對其 進行完善。Apache的特點是簡單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來使用。
- Lighttpd:它是由得國人JanKneschke領(lǐng)導開發(fā)的,基于BSD許可的開源WEB服務(wù)器軟件,其根本的目的是提供一個專門針對高性能網(wǎng)站,安全、快速、兼容性好并且靈活的webserver環(huán)境。具有非常低的內(nèi)存開銷,CPU占用率低,效能好,以及豐富的模塊等特點。支持FastCGI,CGI,Auth,輸出壓縮(outputcompress),URL重寫,Alias等重要功能。
3. 打開瀏覽器,在地址欄輸入 http://jirengu.com 頁面展現(xiàn)了饑人谷官網(wǎng)的信息,整個過程發(fā)生了什么?(饑人谷官網(wǎng)后臺語言 php,web服務(wù)器 nginx,數(shù)據(jù)庫 mysql)
- 瀏覽器查找域名相對應(yīng)的IP地址,當然瀏覽器會先在自身DNS緩存記錄中查找有無該地址的映射。如果沒有找到,便會去系統(tǒng)緩存中尋找有無這個記錄,沒有的話,再到路由器中查找,還沒有的話再到ISP服務(wù)商的DNS緩存中查找,最后沒有則將從頂級域名服務(wù)器的根服務(wù)器開始遞歸查詢,一層一層的查找DNS,知道找到對應(yīng)的IP。

-
瀏覽器將請求發(fā)給Nginx,Nginx響應(yīng)之后根據(jù)用戶需求,通過PHP應(yīng)用處理程序進行處理,若設(shè)計到用戶登錄及數(shù)據(jù)的增刪改查,PHP會與數(shù)據(jù)庫MySQL進行交互,最后服務(wù)器會返回一個靜態(tài)的html文檔。
服務(wù)器將靜態(tài)的HTML文檔發(fā)送到客戶端(瀏覽器)

- 瀏覽器收到服務(wù)器響應(yīng)后,開始下載HTML代碼,通過解析和渲染,呈現(xiàn)出網(wǎng)頁的頁面。
- 瀏覽器的下載順序和渲染順序都是從上到下,下載和渲染同時進行
- 解析html代碼,生成DOM樹。
- 解析html中的CSS生成CSSOM樹,把DOM CSSOM組合成渲染樹
- 在渲染樹的基礎(chǔ)上布局,計算每個節(jié)點的幾何結(jié)構(gòu),把每個節(jié)點繪制到屏幕上。
- 解析JavaScript,解析到的時候執(zhí)行。
- 遇到關(guān)聯(lián)資源圖片、視頻等元素時需要另外并行下載,同一域名下并行下載數(shù)量有限,通常是把資源放置在不同的域名下。
本文版權(quán)歸本人和饑人谷所有,轉(zhuǎn)載請注明來源。
