這個過程可以大致分為兩個部分:網路通訊和頁面渲染。
輸入url按下回車之後,瀏覽器會去瀏覽器快取中尋找該url的ip;沒有的話去系統快取中找,還是沒有的話去路由器快取中尋找;再沒有就去系統host檔案中找,還是沒有最後只能去請求dns伺服器,然後dns給乙個ip給瀏覽器;瀏覽器根據這個ip位址,向伺服器傳送http請求。http經過傳輸層(tcp的三次握手建立連線);網路層(ip協議查詢mac位址);資料鏈路層(找到對方的mac位址之後,將資料傳送到資料鏈路層);物理層(傳輸給伺服器);伺服器接受資料;伺服器響應請求;伺服器返回相應的檔案(html檔案等),接下來就是頁面渲染
在構建 cssom 樹時,會阻塞渲染,直至 cssom 樹構建完成。並且構建 cssom 樹是乙個十分消耗效能的過程,所以應該盡量保證層級扁平,減少過度層疊,越是具體的 css 選擇器,執行速度越慢
瀏覽器渲染阻塞
當 html 解析到 script 標籤時,會暫停構建 dom,完成後才會從暫停的地方重新開始。也就是說,如果你想首屏渲染的越快,就越不應該在首屏就載入 js 檔案。並且 css 也會影響 js 的執行,只有當解析完樣式表才會執行 js,所以也可以認為這種情況下,css 也會暫停構建 dom。
為了避免解析到script標籤的時候就發生瀏覽器渲染阻塞,我們可以給script標籤加上async或者defer屬性,這兩個屬性使得script標籤不會阻塞dom的渲染,能夠非同步載入script指令碼,不阻塞dom渲染。
defer
for (let i = 0; i < 1000; i++)
一般來說,可以把普通文件流看成乙個圖層。特定的屬性可以生成乙個新的圖層。不同的圖層渲染互不影響,所以對於某些頻繁需要渲染的建議單獨生成乙個新圖層,提高效能。但也不能生成過多的圖層,會引起反作用。通過以下幾個常用屬性可以生成新圖層 瀏覽器渲染過程
瀏覽器的渲染過程 第一步 html經過html parser p s 解析為dom tree 第二步 css根據css規則經過css解析器解析為style rules cssom tree 第三步 兩棵樹經過attachment結合為 render tree 形成一棵大樹,此時它還是一棵迷茫的樹,不...
瀏覽器渲染過程
1.頁面準備 2.重定向 在header定義了重定向才會有這個過程,如果沒有就不會產生這個過程 關於重定向的分析 4.dns解析 把網域名稱解析成ip,如果直接用ip位址訪問,不會產生這個過程 5.tcp連線 6.request header 請求頭資訊 7.request body 請求體資訊,比...
瀏覽器渲染過程
瀏覽器通過瀏覽器核心對html檔案進行解析來生成網頁,通過學習其渲染過程可以理解html檔案時如何呈現為網頁的,怎樣優化它。瀏覽器向伺服器發出請求,伺服器返回html檔案 瀏覽器開始載入html 發現標籤內有乙個標籤引用外部css檔案 瀏覽器又發出css檔案的請求,伺服器返回這個css檔案 瀏覽器繼...