瀏覽器是如何渲染出頁面完整過程


一、前言:前端的工作離不開瀏覽器,那么明白瀏覽器是如何工作的,也成為了面試官幾乎必問的問題了。

我們常見的問題有:

1.當我輸入一個url之后瀏覽器是如何渲染界面的

2.瀏覽器緩存靜態資源的規則

如果你對這些問題還有不清楚的地方,那我們一起共同學習吧

二、chrome瀏覽器簡介

chrome瀏覽器多進程架構

 

  • 瀏覽器進程。主要負責界面顯示、用戶交互、子進程管理,同事提供儲存功能。
  • 渲染進程。核心任務是將html、css和javaScript轉化為用戶可以與至交互的網頁,排版引擎blick和js引擎v8都是運行在改進程中,默認情況下,chrome會為每一個tab標簽創建一個渲染進程。出於安全靠率,渲染進程都是運行在沙箱模式下
  • GPU進程,其實,chrome剛開始發布的時候是沒有gpu進程的,而gup的使用初衷是為了事項3D css的效果只是隨后網頁、chrome的ui界面都采用gpu來繪制,
  • 網絡進程。主要負責頁面的網絡資源加載,之前是作為一個模塊運行在瀏覽器進程里面的,直至最近才獨立出來,成為一個單獨的進程。
  • 插件進程:主要是負責插件的運行,應為插件容易崩潰,所以需要通過插件進程來隔離,以保證插件進程崩潰不會對瀏覽器和頁面造成影響。

優點:多進程模型提升了瀏覽器的穩定性、流暢性和安全性

缺點:更高的資源占用。因為每個進程都會包含公共基礎結構的副本,這就意味這瀏覽器會消耗跟多的內存資源

           更復雜的體系架構。瀏覽器各模塊之間耦合性高、拓展性差

三、理解一次完整的請求

  • 首先,瀏覽器進程接收到用戶輸入url請求,瀏覽器進程便將該url轉發給網絡進程。
  • 然后,在網絡進程中發起真正的url請求
  • 接着網絡進程接受到了響應頭數據,邊解析響應頭數據,並將數據轉發非瀏覽器進程。
  • 瀏覽器進程接收到網絡進程的響應頭數據之后,發送提交導航消息到渲染進程;
  • 渲染進程接收到提交導航的消息后,便開始接收html數據,接收數據的方式是直接和網絡進程建立數據管道;
  • 最后渲染進程會向瀏覽器 進程“確認提交”,這是告訴瀏覽器進程“已經准備好接收和解析頁面數據了”
  • 瀏覽器進程接收到渲染進程的消息后,便開始移除之前的文檔,然后更新瀏覽器進程中的頁面轉台。
  • 用戶發出url請求到頁面到開始解析的這個過程,就叫做導航。

用戶在地址欄中輸入內容,瀏覽器器會做什么

  1.url解析判斷時搜索內容還是url

  2.url請求過程

  1. 首先,網絡盡成灰查找本地緩存了該資源。如果有緩存,那直接返回資源給瀏覽器進程,如果在緩存中沒有查找到資源那么直接進入網絡請求流程。這請求前的第一步是要進行dns解析,以獲取請求域名的服務器ip地址。如果請求協議是https,那么還需要建立tls鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM