第一步:用戶輸入baidu.com
URL是什么?
URL(統(tǒng)一資源定位符),用于定位互聯(lián)網(wǎng)上的資源,它包括http,https,ftp,file協(xié)議。
第二步:域名解析
域名解析的流程:
1.查找瀏覽器緩存 —— 瀏覽器會(huì)緩存DNS記錄一段時(shí)間。
瀏覽器會(huì)檢查緩存中有沒有這個(gè)域名對(duì)應(yīng)的解析過的IP地址,如果緩存中有,這個(gè)解析過程就將結(jié)束。
2.查找系統(tǒng)緩存 —— 從Hosts文件查找是否有該域名和對(duì)應(yīng)IP。
如果用戶的瀏覽器緩存中沒有,瀏覽器會(huì)從hosts文件查找是否有存儲(chǔ)DNS信息,查找是否有目標(biāo)域名和對(duì)應(yīng)的IP地址
3.查找路由器緩存 —— 一般路由器也會(huì)緩存域名信息。
如果系統(tǒng)緩存中也找不到,那么查詢請(qǐng)求就會(huì)發(fā)向路由器,路由器一般會(huì)有自己的DNS緩存。
4.ISP DNS緩存 —— 比如到電信的DNS上查找緩存。
如果路由器緩存中也找不到,那么就查詢ISP DNS 緩存服務(wù)器了。
5.如果都沒有找到,則向根域名服務(wù)器查找域名對(duì)應(yīng)IP,根域名服務(wù)器把請(qǐng)求轉(zhuǎn)發(fā)到下一級(jí),直到找到IP。
第三步:服務(wù)器處理
服務(wù)器是一臺(tái)安裝系統(tǒng)的機(jī)器,常見的系統(tǒng)如Linux,Windows server 2012.
系統(tǒng)里安裝的處理請(qǐng)求的應(yīng)用叫Web server。
當(dāng)web server接收到一個(gè)HTTP請(qǐng)求(request),會(huì)返回一個(gè)HTTP響應(yīng)(response),例如送回一個(gè)HTML頁(yè)面。對(duì)于不同用戶發(fā)送的請(qǐng)求,會(huì)結(jié)合配置文件,把不同請(qǐng)求委托給服務(wù)器上處理對(duì)應(yīng)請(qǐng)求的程序進(jìn)行處理(例如CGI腳本,JSP腳本,servlets,ASP腳本,服務(wù)器端JavaScript,或者一些其它的服務(wù)器端技術(shù)等)。
無論它們(腳本)的目的如何,這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個(gè)HTML的響應(yīng)(response)來讓瀏覽器可以瀏覽。
第四步:網(wǎng)站處理流程
那么如何處理請(qǐng)求?實(shí)際上就是后臺(tái)處理的工作。后臺(tái)開發(fā)現(xiàn)在有很多框架,但大部分都還是按照MVC設(shè)計(jì)模式進(jìn)行搭建的。

image
MVC的處理過程是這樣的:對(duì)于每一個(gè)用戶輸入的請(qǐng)求,首先被控制器接收,控制器決定用哪個(gè)模型來進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器確定用哪個(gè)視圖模型,用相應(yīng)的視圖格式化模型返回html字符串給瀏覽器,并通過顯示頁(yè)面呈現(xiàn)給用戶。
第五步:瀏覽器處理:
1.HTML字符串被瀏覽器接手后被一句句讀取解析
2.解析到link標(biāo)簽后重新發(fā)送請(qǐng)求獲取CSS
3.解析到script標(biāo)簽后發(fā)送請(qǐng)求獲取js,并執(zhí)行代碼。
4.解析到img標(biāo)簽后發(fā)送請(qǐng)求獲取圖片資源。
第六步:繪制網(wǎng)頁(yè)
瀏覽器根據(jù)HTML和CCS計(jì)算的得到渲染書,繪制到屏幕上,js會(huì)被執(zhí)行。