一個網頁在瀏覽器的渲染過程,即網頁的生命週期


瀏覽器的就是一個顯示網頁的應用程序,一個網頁的主要組件就是描述內容的html標籤及網頁相關的外部資源,如Image, CSS. 瀏覽器的工作就是將這些文本化的HTML標籤轉變爲圖形展示給瀏覽者。

每一個瀏覽器都用不同的方法去完成這個任務。但都遵循一個共同的處理流程,如圖1.1

094926625.jpg

1.1

瀏覽器第一件事情是下載指定的頁面,當我們在輸入完一個網址後,瀏覽器的檢索引擎通過網址URI去定位及下載這個頁面,並將這個頁面保存到資源緩存中,如果這個頁面存在於緩存中,它將跳過下載,而是調用緩存的數據。

當檢索引擎完成一個頁面的下載,瀏覽器會快速的解析html標籤,並發現跟頁面相關的外部資源,如圖片,CSS或者其它的多媒體。檢索引擎然後在去下載這些外部資源。

檢索引擎下載外部資源的時候,瀏覽器開始解析網頁的html標籤,並建立一個DOM樹。此時,基於文本的html標籤變成了可以被瀏覽器操控的對象。


瀏覽器之後開始解析CSS樣式及定義在html標籤相關聯的樣式,並且創建一個樣式對象,styleobject. 這個樣式對象被用來確定瀏覽器如何顯示一個網頁。


當有了DOM tree 及樣式對象後,瀏覽器開始建立一個渲染樹。渲染樹有的時候跟DOM樹是有不同的,因爲有的DOM項因爲CSS設置爲不顯示。那麼這些項將不會出現在渲染樹裏面,而只會在DOM裏面。並且這些項不會出現在瀏覽器的下一步處理中。

現在瀏覽器開始reflow這個過程是由瀏覽器的定位引擎計算每個DOM項的大小及相對於整個頁面的位置。當這個過程處理完時,所有的DOM項被定位好了,最終整個頁面的佈局也就好了。

最後一步是顯示整個頁面,這個工作是瀏覽器的繪畫引擎完成,顯示整個最終的效果。也可以稱爲repaint.

可是,整個過程並不是這麼簡單。當一個頁面被渲染完成。瀏覽器將會進入到事件循環,瀏覽器開始等待某些事情的發生。我們可以稱爲“event”每一個事件可能來至用戶的點擊或者重置瀏覽器窗口的大小。當瀏覽器捕獲到一個事件,而這個事件是影響整個頁面的佈局,瀏覽器會重新做reflow, paint的過程。更新整個頁面的佈局。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章