前端頁面渲染機制


瀏覽器基礎結構

  瀏覽器基礎結構主要包括如下7部分:

  • 1.用戶界面(User Interface):用戶所看到及與之交互的功能組件,如地址欄,返回,前進按鈕等;

  • 2.瀏覽器引擎(Browser engine):負責控制和管理下一級的渲染引擎;

  • 3.渲染引擎(Rendering engine):負責解析用戶請求的內容(如HTML或XML,渲染引擎會解析HTML或XML,以及相關CSS,然后返回解析后的內容);

  • 4.網絡(Networking):負責處理網絡相關的事務,如HTTP請求等;

  • 5.UI后端(UI backend):負責繪制提示框等瀏覽器組件,其底層使用的是操作系統的用戶接口;

  • 6.JavaScript解釋器(JavaScript interpreter):負責解析和執行JavaScript代碼;

  • 7.數據存儲(Data storage):負責持久存儲諸如cookie和緩存等應用數據

瀏覽器內核

  • Trident內核: IE
  • Webkit內核:Chrome,Safari
  • Gecko內核:FireFox

網絡

  當用戶訪問頁面時,瀏覽器需要獲取用戶請求內容,這個過程主要涉及瀏覽器網絡模塊:

  1.用戶在地址欄輸入域名,如baidu.com,DNS(Domain Name System,域名解析系統)服務器根據輸入的域名查找對應IP,然后向該IP地址發起請求;

DNS

  • 2.瀏覽器獲得並解析服務器的返回內容(HTTP response);
  • 3.瀏覽器加載HTML文件及文件內包含的外部引用文件及圖片,多媒體等資源。

DNS預解析(DNS prefetch)

  瀏覽器DNS解析大多時候較快,且會緩存常用域名的解析值,但是如果網站涉及多域名,在對每一個域名訪問時都需要先解析出IP地址,而我們希望在跳轉或者請求其他域名資源時盡量快,則可以開啟域名預解析,瀏覽器會在空閑時提前解析聲明需要預解析的域名

多進程

我們通常說JavaScript執行是單進程的,但是瀏覽器網絡部分通常是有幾個平行進程同時開啟,但是也會有
限制,一般為2-6個。

渲染引擎及關鍵渲染路徑(Critical Rendering Path)

  • 1.構建DOM樹(DOM tree):從上到下解析HTML文檔生成DOM節點樹(DOM tree),也叫內容樹(content tree);
  • 2.構建CSSOM(CSS Object Model)樹:加載解析樣式生成CSSOM樹;
  • 3.執行JavaScript:加載並執行JavaScript代碼(包括內聯代碼或外聯JavaScript文件);
  • 4.構建渲染樹(render tree):根據DOM樹和CSSOM樹,生成渲染樹(render tree);

    渲染樹:按順序展示在屏幕上的一系列矩形,這些矩形帶有字體,顏色和尺寸等視覺屬性。

  • 5.布局(layout):根據渲染樹將節點樹的每一個節點布局在屏幕上的正確位置;

  • 6.繪制(painting):遍歷渲染樹繪制所有節點,為每一個節點適用對應的樣式,這一過程是通過UI后端模塊完成;

 


免責聲明!

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



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