從輸入 URL 到頁面加載完成的過程

瀏覽器的地址欄輸入URL并按下回車后,

  1. 開啟網(wǎng)絡請求線程
  2. DNS域名解析
  3. 根據(jù)IP建立TCP連接(三次握手)
  4. HTTP發(fā)起請求
  5. 服務器處理請求,瀏覽器接收HTTP響應
  6. 瀏覽器解析渲染頁面
  7. 關閉TCP連接(四次揮手)

一、 開啟網(wǎng)絡請求線程

瀏覽器是多進程的,每打開一個tab頁,就相當于創(chuàng)建了一個獨立的瀏覽器進程,相同類型的標簽頁會合并到一個進程中。

瀏覽器進程包含:
  1. Browser進程:瀏覽器的主進程(負責協(xié)調(diào)、主控、只有一個)。
    作用:(1)負責管理各個標簽的創(chuàng)建和銷毀;(2)負責瀏覽器頁面顯示;(3)負責資源的管理和下載
  2. 第三方插件進程:可以是多個進程,負責每一個第三方插件的使用,每一個第三方插件使用時候會創(chuàng)建一個對應的進程
  3. GPU進程:最多1個進程,負責3D繪制和硬件加速
  4. 瀏覽器渲染進程(Renderer進程):可以是多個線程,瀏覽器的內(nèi)核,每個tab頁一個進程,主要負責HTML、,css,js等文件的解析,執(zhí)行和渲染,以及事件處理等。
瀏覽器渲染進程(內(nèi)核進程)

每一個tab頁面是瀏覽器內(nèi)核進程,然后這個每一個進程是多線程的,它有幾大類子線程:
(1)GUI線程;(2)JS引擎線程;(3)事件觸發(fā)線程;(4)定時器線程;(5)異步的http網(wǎng)絡請求線程

通信過程
  • Browser進程接收到用戶請求,獲取頁面內(nèi)容(譬如通過網(wǎng)絡下載資源),將該任務通過RendererHost接口傳遞給Renderer進程
  • Renderer進程的Renderer接口收到消息,交給GUI渲染線程,開始渲染
    *GUI渲染線程接收請求,加載網(wǎng)頁并渲染網(wǎng)頁,這其中可能需要Browser進程獲取資源和需要GPU進程來幫助渲染
    *當然可能會有JS線程操作DOM(這樣會造成回流或重繪)
    *最后Renderer進程將結果bitmap傳遞給Browser進程
  • Browser進程接收到結果并將結果繪制出來

二、 DNS域名解析

IP地址是網(wǎng)絡上標識站點的數(shù)字地址,為了方便記憶,采用域名來代替IP地址標識站點地址,域名解析就是域名到IP地址的轉(zhuǎn)換過程。域名是與IP地址的一個映射。
過程:
1)用戶在瀏覽器輸入一個URL后,瀏覽器先找瀏覽器緩存,沒有就去本機緩存,沒有就看host文件有沒有,有就返回IP。
2)如果host文件沒有,就向本地DNS服務器查詢(遞歸查詢),如果沒有查到,就向根DNS服務器查詢(迭代查詢)。

注:我們本地硬盤下有一個hosts(windows下路徑為C:\Windows\System32\drivers\etc)文件,作用是將一些常用的網(wǎng)址域名與其對應的IP地址建立一個關聯(lián)“數(shù)據(jù)庫”。一般來說,系統(tǒng)會首先自動從hosts文件中尋找對應的IP地址,如果有的話就直接使用hosts文件里面的IP地址,然后直接進行端口確認。

遞歸查詢:在該模式下DNS服務器接收到客戶機請求,必須返回一個準確的查詢結果給客戶機。如果該DNS服務器本地沒有存儲被查詢的DNS信息,那么該服務器會(替客戶機)詢問其他服務器,并將返回的查詢結果再返回給客戶機。

迭代查詢:在該模式下DNS服務器接收到客戶機請求,如果該DNS服務器本地沒有存儲被查詢的DNS信息,DNS服務器會向客戶機提供其他能夠解析查詢請求的DNS服務器地址,讓客戶機再向這臺DNS服務器提交請求,依次循環(huán)直到返回查詢的結果為止。

DNS解析是很耗時的,因此如果解析域名過多,首屏加載會變慢,可以考慮使用dns-prefetch優(yōu)化。

六、瀏覽器解析渲染頁面

  1. 根據(jù) html 解析出 dom 樹
  2. 根據(jù) css 解析生成 css 規(guī)則樹
  3. 結合 dom 樹和 css 規(guī)則樹生成渲染樹
  4. 根據(jù)渲染樹計算每一個節(jié)點的信息
  5. 根據(jù)計算好的信息繪制頁面
最后編輯于
?著作權歸作者所有,轉(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)容