從瀏覽器輸入一個地址到頁面展示中間經(jīng)歷了什么?

當我們在瀏覽器的地址欄中輸入一個URL:www.baidu.com,具體發(fā)生了什么?

1.對網(wǎng)址進行DNS域名解析,得到對應的ip地址;

2.根據(jù)這個ip,找到對應的服務器,建立TCP連接(三次握手);

(TCP是比http更底層的傳輸層協(xié)議)

3.TCP連接之后,發(fā)起http請求;

4.http響應返回回來html代碼,瀏覽器接收到html代碼;

5.瀏覽器解析html代碼,并請求html代碼中的一些資源(js文件、圖片、css文件等)

6.瀏覽器渲染html;

7.服務器關閉連接? tcp、http連接

DNS如何解析域名?

瀏覽器自身的域名緩存查找,沒找到就到操作系統(tǒng)的域名緩存查找,沒找到就到hosts緩存查找(自己可以更改映射),沒找到就去域名服務器查找。

瀏覽器如何解析html代碼,請求代碼中的資源,渲染至頁面?

例如:下載index.html文件=》瀏覽器解析html,同時下載js,css,圖片等文件=》html生成DOM樹,css生成CSSOM樹=》合成render樹=》計算元素的位置、尺寸等(這是一次回流)=》根據(jù)位置、尺寸等信息,進行一次繪制(重繪),進行display屬性,渲染完頁面

因為js是單線程的,執(zhí)行代碼是從上至下的,瀏覽器的解析是異步的,可以一邊解析html代碼,一邊請求js文件,但是如果遇到了js文件,則會將解析暫時掛起,因為js代碼中可能會存在對dom的操作,可能會引起重繪和回流。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容