回覆列表
-
1 # 使用者9260509133549
-
2 # pietr49411
使用者輸入URL地址瀏覽器解析URL解析出主機名瀏覽器將主機名轉換成伺服器ip地址(瀏覽器先查詢本地DNS快取列表 沒有的話 再向瀏覽器預設的DNS伺服器傳送查詢請求 同時快取)瀏覽器將埠號從URL中解析出來瀏覽器建立一條與目標Web伺服器的TCP連線(三次握手)瀏覽器向伺服器傳送一條HTTP請求報文伺服器向瀏覽器返回一條HTTP響應報文關閉連線 瀏覽器解析文件如果文件中有資源 重複6 7 8 動作 直至資源全部載入完畢
這篇文章應該可以回答你的問題:瞭解html頁面的渲染過程 其實這問題也沒必要糾結那麼深,知道下大概過程也就可以,我曾經也糾結過。這裡說下我的理解。 瀏覽器接收到html程式碼,可能是一份完整的文件,也可能是一個chunk,即開始解析。解析過程是先構建dom樹,再根據dom樹構建渲染樹,最後瀏覽器將渲染樹繪製到頁面上。 構建dom樹的過程即根據html程式碼自上而下進行構建,當遇到script檔案載入/執行會阻塞後面dom樹的構建(javascript可能會改變dom樹),而遇到css檔案則會阻塞渲染樹的構建,即dom樹依然繼續構建(除非遇到script標籤並且css檔案依舊未載入完成),但不會渲染繪製到頁面上。而無論哪個阻塞,該載入的檔案還是會載入,例如html文件中的其他css/js/圖片檔案。另外javascript被載入後就會被執行,執行的過程也阻塞樹的構建。是執行完了才解析其他內容,而不是執行完了才載入其他內容。 至於asyn和defer,其實上面說的script阻塞就可以用它們解決了,詳細自行查詢資料