1、在瀏覽器地址欄輸入url后,通過dns查詢將域名轉換為對應的IP地址(瀏覽器本地緩存,電腦緩存,路由器等中間緩存,域名服務器);
2、找到服務器的IP地址后,通過三次握手建立tcp連接,瀏覽器在建立好的tcp連接上發送http請求到服務端;
3、服務端處理請求,並發送響應到瀏覽器端
4、瀏覽器接收到響應數據(html文件),並解析html文件
5、解析html文件時,首先將接收到的數據按照編碼方式轉化為單個字符,再通過瀏覽器規范將單個字符組合成對應的標記,然后根據規范將標記轉化為包含對應屬性的對象————dom節點,然后形成dom樹
6、在解析html文件時,會遇到<link>和<script>標簽外鏈樣式文件和腳本文件,其中css文件的加載不會阻塞dom樹的構建,但會阻塞render樹的構建;腳本文件在加載后會立即執行,並且加載和執行的過程都會阻塞dom樹的構建。這里還有一點就是css文件的加載會阻塞腳本文件的執行,因為腳本文件可能會依賴css文件。
7、加載好的css文件會按照類似的解析規則生成對應的css規則樹,與dom樹一起合並成render樹,也就是瀏覽器中呈現頁面所對應的內容結構。
8、渲染render樹時,首先計算好頁面元素的占據空間信息和位置信息(回流),然后計算其背景色,字體顏色,邊框顏色等外觀信息(重繪),將所有元素都進行合成到一個復合圖層上去,交給GPU進行渲染,最終呈現到瀏覽器中