📄 Web Browsing Process
1. Please explain how the browser obtains HTML from the server and how the browser renders the HTML on the screen
請說明瀏覽器如何從 server 端取得 HTML,並如何在瀏覽器上渲染 HTML
1. 發起請求
- 網址輸入:使用者在瀏覽器上輸入網址,或是點擊一個連結,瀏覽器會開始解析這串 URL,確認要向哪個伺服器發起請求。
- DNS 查找:瀏覽器開始執行查找 DNS,以及對應的伺服器 IP 地址。
- 建立連結:瀏覽器透過網際網路使用 HTTP 或 HTTPS 協議,向伺服器的 IP 地址發出請求,同時如果是 HTTPS 協議,還需要進行 SSL/TLS 連接。
2. Server 端響應
- 處理請求:伺服器接收到請求後,會根據請求的路徑與參數,從資料庫中讀取對應的資料數據。
- 發送 Response:接著會將 HTML 文件作為 HTTP Response 的一部分發送回瀏覽器,Response 本身還會包含諸如狀態碼或其他參數(cors, content-type)等。
3. 解析 HTML
- 構建 DOM Tree:瀏覽器開始讀取 HTML 文件,並根據 HTML 文件的標籤與屬性,轉換成 DOM 並開始在記憶體中構建 DOM Tree。
- requesting subresources(請求子資源):解析 HTML 文件時,如果遇到外部資源,例如 CSS、JavaScript、圖片等,瀏覽器會進一步向伺服器發起請求,獲取這些資料。
4. Render Page(渲染頁面)
- 構建 CSSOM Tree:瀏覽器開始解析 CSS 文件,構建 CSSOM Tree。
- Render Tree:瀏覽器將 DOM Tree 和 CSSOM Tree 合併成一個 Render Tree,包含所有要渲染的節點與對應樣式。
- Layout(佈局):瀏覽器開始進行版面設定(Layout 或 Reflow),計算每個節點的位置與大小。
- Paint(繪製):最後瀏覽器經過繪製(painting)階段,將每個節點的內容畫到頁面上。