瀏覽器工作原理之渲染引擎

2021-10-04 23:43:30 字數 1377 閱讀 1390

備註:文件物件模型(document object model,簡稱dom)

####1.關於css阻塞:

宣告:只有link引入的外部css才能夠產生阻塞。

1.style標籤中的樣式:

(1). 由html解析器進行解析;

(2). 不阻塞瀏覽器渲染(可能會產生「閃屏現象」);

(3). 不阻塞dom解析;

(1). 由css解析器進行解析。

(2). 阻塞瀏覽器渲染(可以利用這種阻塞避免「閃屏現象」)。

(3). 阻塞其後面的js語句的執行:

(4). 不阻塞dom的解析:

3.優化核心理念:盡可能快的提高外部css載入速度

(1).使用cdn節點進行外部資源加速。

(2).對css進行壓縮(利用打包工具,比如webpack,gulp等)。

(3).減少http請求數,將多個css檔案合併。

(4).優化樣式表的**

2.關於js阻塞:
1.阻塞dom解析:

原因:瀏覽器不知道後續指令碼的內容,如果先去解析了下面的dom,而隨後的js刪除了後面所有的dom,

那麼瀏覽器就做了無用功,瀏覽器無法預估指令碼裡面具體做了什麼操作,例如像document.write

這種操作,索性全部停住,等指令碼執行完了,瀏覽器再繼續向下解析dom。

2.阻塞頁面渲染:

原因:js中也可以給dom設定樣式,瀏覽器同樣等該指令碼執行完畢,再繼續幹活,避免做無用功。

3.阻塞後續js的執行:

原因:維護依賴關係,例如:必須先引入jquery再引入bootstrap

3.備註
【備註1】:css的解析和js的執行是互斥的(互相排斥),css解析的時候js停止執行,js執行的時候css停止解析。

原因:瀏覽器始終處於一種:「先把請求發出去」的工作模式,只要是涉及到網路請求的內容,

無論是:、樣式、指令碼,都會先傳送請求去獲取資源,至於資源到本地之後什麼時候用,

由瀏覽器自己協調。這種做法效率很高。

【備註3】:webkit 和 firefox 都進行了【預解析】這項優化。在執行js指令碼時,瀏覽器的其他執行緒會解析文件的其餘部分,

找出並載入需要通過網路載入的其他資源。通過這種方式,資源可以在並行連線上載入,

從而提高總體速度。請注意,預解析器不會修改 dom 樹

在上述的過程中,網頁在載入和渲染過程中會觸發「domcontentloaded」和「onload」事件

分別是在dom樹構建(解析)完成之後,以及dom樹構建完並且網頁所依賴的資源都載入完之後

瀏覽器工作原理2 渲染引擎

介紹 渲染引擎 解析與dom樹構建 渲染樹構建 布局繪製 動態變化 渲染引擎的執行緒 css2可視模型 渲染引擎的職責就是渲染,即在瀏覽器視窗中顯示所請求的內容。預設情況下,渲染引擎可以顯示html xml文件及,它也可以借助外掛程式 一種瀏覽器擴充套件 顯示其他型別資料,例如使用pdf閱讀器外掛程...

了解瀏覽器如何工作 渲染引擎

樹 渲染樹 render tree 渲染樹包含帶有顏色,尺寸等顯示屬性的矩形,這些矩形的順序與顯示順序一致。然後就是對渲染樹的每個節點進行布局處理,確定其在螢幕上的顯示位置。最後 就是遍歷渲染樹並用上一章提到的 後端層將每乙個節點繪製出來。以上步驟是乙個漸進的過程,為了提高使用者體驗,渲染引擎試圖盡...

瀏覽器工作原理(二) 渲染引擎的詳細介紹

首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常風趣幽默,還時不時有內涵段子,像看 一樣,哈哈 我正在學習中,覺得太牛了,所以分享給大家!點這裡可以跳轉到教程 首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常...