從輸入url到頁面載入完成發生了什麼

2021-09-23 18:44:04 字數 1508 閱讀 5716

從前端的角度來看,從輸入url到頁面載入完成發生了什麼呢?

總結地來看就是這樣幾點:

瀏覽器的位址列輸入url並按下回車

瀏覽器查詢當前url是否存在快取,並比較快取是否過期

dns解析url對應的ip

根據ip位址建立tcp連線

http發起請求

伺服器處理請求,瀏覽器接收http響應

構建dom樹,渲染頁面

關閉tcp連線

這個過程中比較核心的部分就是

(1). dns解析 (2). tcp建立連線+http請求 (3). 瀏覽器渲染頁面 (4)斷開連線

1.dns解析

dns解析實際上就是乙個遞迴查詢的過程,實現的是**到ip位址的轉換。

查詢順序大致是:本地網域名稱伺服器根網域名稱伺服器頂級網域名稱伺服器權威網域名稱伺服器

對應**的解析過程就是:.->.com->google.com.->www.google.com.

2. tcp建立連線+http請求

tcp建立連線就是三次握手的過程,客戶端:你好,我要請求資料;伺服器端:你好,可以;客戶端:好的。

http請求主要發生在客戶端,這部分又可以稱為前端工程師眼中的http,傳送http請求的過程就是構建http請求報文並通過tcp協議發到伺服器指定埠(http協議80/8080,https協議443)。報文由三部分組成:請求行,請求頭,請求實體。

3.瀏覽器渲染頁面

處理html標記並構建dom樹

處理css標記並構建cssom樹

將dom樹和cssom樹合併構建乙個渲染樹

渲染樹布局,瀏覽器通過render tree計算出每個節點物件在頁面的確切大小和位置

渲染樹繪製,瀏覽器會呼叫渲染器的paint()方法在螢幕上顯示內容

domcontentloaded事件觸發代表初始的html被完全載入和解析,不需要等待css,js,載入。

load事件觸發代表頁面中的dom,css,js,已經全部載入完畢。

4.斷開連線

客戶端:我要斷開連線了;伺服器:收到;伺服器:我也要斷開連線了;客戶端:收到(我會在2倍的報文最大生存時間後斷開連線,如果在這個時間內再收到伺服器的訊息,我就再傳送一遍確認資訊)。

從輸入URL到頁面載入完成

例如 協議部分 http www.guokr.com 資源路徑 question 554991 2 如果位址不是乙個ip位址,通過dns 網域名稱系統 將該位址解析成ip位址。ip位址對應著網路上一台計算機,dns伺服器本身也有ip,你的網路設定包含dns伺服器的ip。例如 www.guokr.co...

《從輸入URL到頁面載入完成發生了什麼》學習過程

發現自己有以下幾個問題不理解。a.資料在路由器之間是傳輸的?b.tcp工作原理。對於其他步驟,雖然不了解具體細節,但是了解大概的工作原理。比如第4步伺服器的處理,可以模擬現有業務的架構 第5步瀏覽器渲染頁面,可以模擬現有業務被瀏覽器請求後的處理。2.分步驟學習。要了解網絡卡是怎麼封裝資料的,必須了解...

從輸入url到頁面載入完成發生了什麼? 前端角度

我的github ps 希望star 這是一道經典的面試題,這道面試題不光前端面試會問到,後端面試也會被問到。這道題沒有乙個標準的答案,它涉及很多的知識點,面試官會通過這道題了解你對哪一方面的知識比較擅長,然後繼續追問看看你的掌握程度。當然我寫的這些也只是我的一些簡單的理解,從前端的角度出發,我覺得...