備註:文件物件模型(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 渲染樹包含帶有顏色,尺寸等顯示屬性的矩形,這些矩形的順序與顯示順序一致。然後就是對渲染樹的每個節點進行布局處理,確定其在螢幕上的顯示位置。最後 就是遍歷渲染樹並用上一章提到的 後端層將每乙個節點繪製出來。以上步驟是乙個漸進的過程,為了提高使用者體驗,渲染引擎試圖盡...
瀏覽器工作原理(二) 渲染引擎的詳細介紹
首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常風趣幽默,還時不時有內涵段子,像看 一樣,哈哈 我正在學習中,覺得太牛了,所以分享給大家!點這裡可以跳轉到教程 首先給大家分享乙個巨牛巨牛的人工智慧教程,是我無意中發現的。教程不僅零基礎,通俗易懂,而且非常...