這是一個從URL輸入到頁面展現(xiàn)的過程。
名詞解釋:
- URL:統(tǒng)一資源定位符(Uniform Resource Locator,URL),用于定位互聯(lián)網(wǎng)上的資源并指出訪問方法?;ヂ?lián)網(wǎng)上的每個文件都有一個唯一的URL,指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
- DNS:域名系統(tǒng)(Domain Name System),因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機器直接讀取的IP數(shù)串。通過主機名,最終得到該主機名對應(yīng)的IP地址的過程叫做域名解析(或主機名解析)。每個IP地址都可以有一個主機名,主機名由一個或多個字符串組成,字符串之間用小數(shù)點隔開。有了主機名,就不要死記硬背每臺IP設(shè)備的IP地址,只要記住相對直觀有意義的主機名就行了。這就是DNS協(xié)議所要完成的功能。
- ISP:互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider),即向廣大用戶綜合提供互聯(lián)網(wǎng)接入業(yè)務(wù)、信息業(yè)務(wù)、和增值業(yè)務(wù)的電信運營商。
- dom:文檔對象模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴展標志語言的標準編程接口。在網(wǎng)頁上,組織頁面(或文檔)的對象被組織在一個樹形結(jié)構(gòu)中,用來表示文檔中對象的標準模型就稱為DOM。
1.在瀏覽器里輸入URL
用戶打開瀏覽器,輸入baidu.com。
2.域名解析
域名解析就是域名到IP地址的轉(zhuǎn)換過程。域名的解析工作由DNS服務(wù)器完成。即查找域名(baidu.com)網(wǎng)站所在服務(wù)器的IP地址,域名解析的流程如下:
- 從瀏覽器緩存里找:瀏覽器會緩存之前用過的DNS一段時間(若無轉(zhuǎn)至下一步)。
- 從系統(tǒng)緩存里找:從Host文件查找是否有該域名對應(yīng)的IP(若無轉(zhuǎn)至下一步)。
- 從路由器緩存里找:從路由器中查找該域名IP地址的緩存信息(若無轉(zhuǎn)至下一步)。
- 從ISP DNS緩存里找:從ISP(例如:電信)的DNS上查找該域名IP地址的緩存信息(若無轉(zhuǎn)至下一步)。
- 如以上方法都沒找到,則向根域名服務(wù)器查找域名對應(yīng)的IP,直到找到為止。
3.服務(wù)器處理
服務(wù)器是一臺安裝系統(tǒng)的機器。系統(tǒng)里安裝的處理請求的應(yīng)用叫Web server,用于接受用戶的請求,返回給網(wǎng)站代碼。常見的web服務(wù)器有Apache、Nginx、IIS、Lighttpd。
瀏覽器把用戶發(fā)起的HTTP請求發(fā)送給服務(wù)器后,Web server會在它自己的存儲空間中搜索所請求的文件(因為同一個服務(wù)器地址,可能同時綁定了多個域名,此時需要配置web服務(wù)器將請求轉(zhuǎn)給相應(yīng)的端口)。當找到文件時,服務(wù)器會讀取它,按需處理它,并且把它傳送回瀏覽器。Web server就相當于起到了內(nèi)容分發(fā)的作用。
4.網(wǎng)站處理
網(wǎng)站處理,就是實際后臺處理的工作。后臺開發(fā)有很多框架,但大部分是按照MVC設(shè)計模式進行搭建的。MVC是一個設(shè)計模式,將應(yīng)用程序分成三個核心部件:模型(model)、視圖(view)、控制器(controller)。
控制器統(tǒng)一管理,接收服務(wù)器傳送過來的用戶請求并調(diào)用模型和視圖去完成用戶需求(決定調(diào)用哪個模型構(gòu)件去處理請求,然后確定用哪個視圖來顯示模型處理返回的數(shù)據(jù))。如需查找所需用戶的數(shù)據(jù),便向模型要數(shù)據(jù),模型操作數(shù)據(jù)庫,查找所需數(shù)據(jù),找到后發(fā)回給控制器。視圖是HTML模板,把數(shù)據(jù)填入模板生成HTML,發(fā)回給控制器??刂破鲝哪P椭心玫綌?shù)據(jù),然后從視圖中拿到HTML,經(jīng)過處理,返回html字符串給瀏覽器。
5.瀏覽器處理
通過后臺處理返回的html字符串結(jié)果會被瀏覽器讀取解析,對應(yīng)的就是html頁面加載、解析、渲染的工作。
(1)加載
瀏覽器對一個html頁面的加載順序是從上而下的,并在加載過程中進行解析渲染處理。在這個過程中遇到link標簽、image標簽、script標簽時,瀏覽器會再次向服務(wù)器發(fā)送請求獲取css文件、圖片資源、js文件,并執(zhí)行js代碼,同步進行加載解析。
(2)解析、渲染
解析的過程,就是生成解析樹,即dom樹。dom樹是由dom元素及屬性節(jié)點組成,加上css解析的樣式對象和js解析后的動作實現(xiàn)。而渲染,就是將dom樹進行可視化表示。
6.繪制網(wǎng)頁
瀏覽器通過上面步驟計算得到渲染樹(dom樹的可視化表示),構(gòu)建渲染樹使頁面以正確的順序繪制出來,遵循一定的規(guī)則經(jīng)過一系列渲染工作后,實現(xiàn)網(wǎng)頁的繪制,至此最終完成了百度首頁的展示。