瀏覽器從輸入網(wǎng)址到獲得并呈現(xiàn)網(wǎng)頁(yè)全過(guò)程涉及的前端知識(shí)比較全面和重要拾并,我們前端工程師應(yīng)該理解這一過(guò)程。這個(gè)過(guò)程主要分為網(wǎng)路通信和頁(yè)面渲染兩大部分奢讨,而整個(gè)過(guò)程也可大致分為如下步驟:
- DNS解析
- TCP連接
- 客戶端發(fā)送請(qǐng)求
- 服務(wù)端根據(jù)請(qǐng)求返回響應(yīng)
- 瀏覽器根據(jù)返回的html蔚鸥、css、js和圖片渲染頁(yè)面
個(gè)人總結(jié):
網(wǎng)絡(luò)通信:
- DNS解析:輸入網(wǎng)址后捧弃,瀏覽器通過(guò)域名查找IP地址赠叼,這時(shí)用到的方法就是DNS解析擦囊,其查找過(guò)程如下:
瀏覽器緩存→系統(tǒng)緩存→路由器緩存→ISP DNS 緩存(遞歸搜索)
ISP DNS 緩存遞歸搜索會(huì)從跟域名服務(wù)器開始進(jìn)行遞歸搜索,從.com頂級(jí)域名服務(wù)器開始嘴办,沒有相應(yīng)信息便逐層搜索瞬场,最后直到準(zhǔn)確的域名服務(wù)器。 - TCP連接:找到IP地址后涧郊,瀏覽器便和服務(wù)器建立TCP連接(http協(xié)議就是基于這個(gè)TCP/IP連接進(jìn)行通訊)贯被,這里涉及到TCP連接的三次握手。
- 客戶端發(fā)送請(qǐng)求:當(dāng)連接建立完成妆艘,客戶端就會(huì)發(fā)送HTTP請(qǐng)求彤灶,請(qǐng)求中包含一些信息如: Accept、User-Agent批旺、Accept-Encoding幌陕、Connection、Host朱沃、Cookie等等苞轿,需要記住。
- 服務(wù)器返回響應(yīng):服務(wù)器接收到客戶端HTTP請(qǐng)求后經(jīng)處理會(huì)返回html以及響應(yīng)逗物,響應(yīng)中也包含一些需要記住的信息搬卒。(這個(gè)過(guò)程可能涉及重定向,注意響應(yīng)中的狀態(tài)碼)
- 渲染頁(yè)面:解析HTML頁(yè)面→構(gòu)建DOM樹→布局DOM樹→渲染DOM樹
參考文章: