從URL輸入到頁面展示大體經(jīng)過了以下幾個(gè)流程
1 . 輸入U(xiǎn)RL
- URL:統(tǒng)一資源定位符字管,是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡(jiǎn)潔的表示辫愉。
URL包含以下幾部分:協(xié)議凿宾、服務(wù)器名稱(或IP地址)荆陆、路徑希柿、參數(shù)和查詢浮创。
- 域名解析
- 我們需要將域名轉(zhuǎn)化為對(duì)應(yīng)的IP地址忧吟,如何實(shí)現(xiàn)呢?首先是查看瀏覽器以及系統(tǒng)有沒有這個(gè)IP地址的緩存斩披,若果沒有溜族,查看本地hosts文件(用來保存域名以及域名對(duì)應(yīng)的IP地址),如果還是沒有垦沉,則詢問本地域名服務(wù)器煌抒,還是沒有,則詢問根域名服務(wù)器厕倍。這種過程直至找到能夠回答該請(qǐng)求的域名服務(wù)器為止寡壮。
- 瀏覽器與服務(wù)器建立連接,并發(fā)送請(qǐng)求給服務(wù)器
- 當(dāng)瀏覽器得到域名對(duì)應(yīng)的IP地址后讹弯,則會(huì)使用TCP協(xié)議况既,和服務(wù)器建立連接(三次握手)。
和服務(wù)器建立連接后组民,瀏覽器則會(huì)使用相關(guān)協(xié)議(http或https)棒仍,向服務(wù)器發(fā)送請(qǐng)求。
HTTP協(xié)議請(qǐng)求方法主要有:get臭胜、post莫其、put、delete等幾種方式耸三。
- 服務(wù)器收到請(qǐng)求并處理乱陡,最后返回結(jié)果
- 服務(wù)器是一臺(tái)安裝系統(tǒng)的機(jī)器,常見的系統(tǒng)如Linux仪壮、windows server 2012蛋褥,系統(tǒng)中安裝的處理請(qǐng)求的應(yīng)用叫Web server。常見的Web服務(wù)器有 Apache睛驳、Nginx烙心、IIS、Lighttpd乏沸,Web服務(wù)器接收用戶的請(qǐng)求淫茵,或者接受請(qǐng)求反向代理到其他Web服務(wù)器。
(以MVC框架為例)當(dāng)服務(wù)器收到來自用戶的請(qǐng)求后蹬跃,首先Controller(控制器)根據(jù)用戶的請(qǐng)求調(diào)用相應(yīng)的Model(模型)去處理用戶請(qǐng)求相關(guān)的業(yè)務(wù)邏輯(包括對(duì)數(shù)據(jù)庫的增刪改查)匙瘪,然后將處理結(jié)果傳遞給對(duì)應(yīng)的View(視圖)铆铆,構(gòu)造顯示頁面(HTML文件)。最后服務(wù)器使用HTTP響應(yīng)返回相應(yīng)的資源(HTML文件)丹喻。
- 瀏覽器處理響應(yīng)
- 瀏覽器收到來自服務(wù)器的響應(yīng)后薄货,會(huì)將響應(yīng)中的HTML字符串一句句讀取解析攀隔,解析到link標(biāo)簽后重新發(fā)送請(qǐng)求下載css文件蝇狼,解析到script標(biāo)簽后重新發(fā)送請(qǐng)求下載js文件,并執(zhí)行代碼嫉拐,解析到img標(biāo)簽后重新發(fā)送請(qǐng)求獲取圖片資源鳍悠。
瀏覽器根據(jù)html税娜、css計(jì)算得到渲染樹,結(jié)合相關(guān)js的執(zhí)行結(jié)果藏研,最終將網(wǎng)頁繪制到屏幕上敬矩。