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