當(dāng)我們?cè)跒g覽器輸入一個(gè)URL姜性,到瀏覽器展現(xiàn)給我們想要的頁(yè)面并可以操作季希,這其中大致經(jīng)歷了6個(gè)步驟:
1. 在瀏覽器輸入U(xiǎn)RL
2. 域名解析
3. 服務(wù)器處理
4. 網(wǎng)站處理
5.瀏覽器處理
6. 繪制網(wǎng)頁(yè)
1. 輸入U(xiǎn)RL
URL,即Uniform Resource Locator,統(tǒng)一資源定位符,顧名思義,其為可定位互聯(lián)網(wǎng)上資源的地址符號(hào)。URL的基本元素有:傳輸協(xié)議、域名顽冶、端口號(hào)等。常用的傳輸協(xié)議有:
- HTTP(hyper text transport protocol):超文本傳輸協(xié)議售碳。
- FILE:本地文件傳輸協(xié)議强重。是從用戶自己計(jì)算機(jī)上獲取文件的一種方法.
- FTP(file transfer protocol):文件傳輸協(xié)議绞呈。它是為用戶與文件服務(wù)器之間進(jìn)行相互傳輸文件服務(wù)的。
- HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer):數(shù)據(jù)經(jīng)過(guò)加密的超文本傳輸協(xié)議
若開(kāi)頭僅有//,則表示該URL協(xié)議與當(dāng)前頁(yè)面一致间景。
2. 域名解析
IP(Internet Protocol):即網(wǎng)絡(luò)之間互聯(lián)的協(xié)議佃声。對(duì)于我們輸入的URL,瀏覽器并不知道是什么倘要,需要查找其所在IP地址才能找到目標(biāo)圾亏。
每個(gè)處于互聯(lián)網(wǎng)中的設(shè)備都有IP 地址,形如 192.168.0.1封拧。
公網(wǎng)IP:是由國(guó)際互聯(lián)網(wǎng)分配的唯一的IP地址志鹃,是個(gè)靜態(tài)IP地址。
局域網(wǎng)IP:由路由器建立子網(wǎng)分配IP地址泽西。
域名:由于IP字符不便于記憶和輸入曹铃,所以通常設(shè)置一個(gè)域名與IP相對(duì)應(yīng),例如google的域名為:google.com尝苇。
域名解析的流程:
- 瀏覽器緩存 – 瀏覽器會(huì)緩存DNS記錄一段時(shí)間
- 系統(tǒng)緩存 - 從 Hosts 文件查找是否有該域名和對(duì)應(yīng) IP铛只。
- 路由器緩存 – 一般路由器也會(huì)緩存域名信息。
- ISP DNS 緩存 – 比如到電信的 DNS 上查找緩存糠溜。
- 如果都沒(méi)有找到,則向根域名服務(wù)器查找域名對(duì)應(yīng) IP直撤,根域名服務(wù)器把請(qǐng)求轉(zhuǎn)發(fā)到下一級(jí)非竿,知道找到 IP
3. 服務(wù)器處理
服務(wù)器是一臺(tái)安裝系統(tǒng)的機(jī)器,常見(jiàn)的系統(tǒng)如Linux谋竖、windows server 2012
系統(tǒng)里安裝的處理請(qǐng)求的應(yīng)用叫 Web server
常見(jiàn)的 web服務(wù)器有 Apache红柱、Nginx、IIS蓖乘、Lighttpd
web服務(wù)器接收用戶的Request 交給網(wǎng)站代碼锤悄,或者接受請(qǐng)求反向代理到其他 web服務(wù)器
4. 網(wǎng)站處理
網(wǎng)站處理遵循MVC流程,即模型(model)-視圖(view)-控制器(controller)
- 模型(model): 將開(kāi)發(fā)中的業(yè)務(wù)規(guī)則和數(shù)據(jù)格式進(jìn)行模型化嘉抒,可以被多個(gè)視圖重用零聚。
- 視圖(view): 用戶看到并與之交互的界面。這也是前端的主要工作范圍些侍。
- 控制器(controller): 從視圖接收請(qǐng)求并決定調(diào)用哪個(gè)模型去處理請(qǐng)求隶症,并確定用哪個(gè)視圖來(lái)顯示模型處理返回的數(shù)據(jù)。最后返回HTML字符串給瀏覽器岗宣。
5. 瀏覽器處理
HTML字符串被瀏覽器接受后被一句句讀取解析
解析到link 標(biāo)簽后重新發(fā)送請(qǐng)求獲取css
解析到 script標(biāo)簽后發(fā)送請(qǐng)求獲取 js蚂会,并執(zhí)行代碼
解析到img 標(biāo)簽后發(fā)送請(qǐng)求獲取圖片資源
6. 繪制網(wǎng)頁(yè)
瀏覽器根據(jù) HTML 和 CSS 計(jì)算得到渲染樹(shù),繪制到屏幕上
js 會(huì)被執(zhí)行