從輸入URL到頁面展現

當咱們輸入 URL 並按回車後,瀏覽器會對 URL 進行檢查,首先判斷URL格式,好比是ftp http ed2k等等,咱們這裏假設這個URL是http://hellocassie.cn,那麼瀏覽器會對這個 URL 進行安全檢查,而後瀏覽器內核會先查看緩存,再決定是發起請求,下載頁面,仍是從緩存獲取頁面,若是是第一次訪問,這時候尚未緩存,因此會去向服務器發起一個網絡請求。算法

clipboard.png

下載頁面

首先咱們要肯定服務器的網絡地址,才能把請求發給它,因此要把這個URL轉換成對應的IP地址,瀏覽器會依次從瀏覽器緩存,系統緩存,路由器緩存,本地DNS服務器進行一個遞歸查詢,若是本地DNS服務器也沒有對應的IP地址的記錄,這時候它會把請求發至13臺根域名服務器,根域名服務器收到請求後會判斷這個域名是誰來受權管理,而後返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息後,再去聯繫頂級域名服務器。頂級域名服務器收到請求後,若是本身沒法解析,再返回下一級域名服務器的IP,進行這樣一個迭代查詢以後,一直到子域名服務器。瀏覽器

clipboard.png

這個時候有兩種狀況,第一種是子域名服務器返回了這個URL對應的IP地址,第二種狀況是通過了CDN調度,若是目標網站使用了CDN服務,則須要在CDN服務商的平臺設置相應的CNAME記錄,這個記錄是CDN服務廠商的一個DNS服務器的域名,子域名服務器會返回這個CNAME記錄,本地DNS服務器獲得這個記錄後,會向CDN服務廠商的DNS服務器查詢,而後CDN服務廠商的DNS服務器返回CDN服務廠商的一臺GSLB設備(全局負載均衡設備)的IP,本地DNS服務器攜帶自身的IP地址和要查詢的域名向GSLB設備發起請求,GSLB設備根據IP,以及要查詢的域名,選擇一臺用戶所屬區域的區域負載均衡設備,區域負載均衡設備根據必定的算法和策略,會向GSLB設備返回一個最適合的CDN節點的IP地址,好比說返回一個距離用戶最近的CDN節點,由於CDN服務器緩存了網站的源服務器的數據,並且會像源服務器同樣,響應用戶的請求. 並且它離用戶更近,因此能得到更快的響應速度。最後本地DNS服務器拿到這個CDN節點的IP地址。緩存

clipboard.png

獲得IP後,會創建TCP鏈接,若是是https開頭的URL,還會創建SSL鏈接,進行一個請求證書,生成對話密鑰的過程。
而後開始進行HTTP請求,瀏覽器會先生成一個HTTP數據包,包含此次請求的信息,主要是請求方法、請求的說明和請求附帶的數據,這個HTTP數據包通過傳輸層,頭部加入雙方的端口信息,被封裝成一個TCP數據包,而後通過網絡層,頭部加入雙方的IP地址信息,被封裝成一個IP數據包,而後通過數據鏈路層,頭部設置雙方的MAC地址,封裝成以太網數據包,最後變成二進制數據,傳送到服務器。安全

clipboard.png

clipboard.png

clipboard.png

而後服務器做出響應,返回一個HTTP報文給瀏覽器,這個HTTP報文包含了狀態行,消息報頭,消息正文(就是HTML)。服務器

緩存獲取頁面

而後咱們再看第二種狀況,若是本地有緩存,瀏覽器會先判斷緩存是否過時,經過Expires和Cache-Control字段來判斷是否命中強制緩存,Expires是服務器返回該請求結果緩存的到期時間,Cache-Control的max-age會返回一個相對時間,由於沒法肯定客戶端的時間是否與服務端的時間同步,因此同時存在時,Cache-Control的優先級更高。
若是強制緩存失效,進行協商緩存過程,瀏覽器攜帶緩存標識向服務器發起請求,由服務器根據緩存標識決定是否使用本地緩存。網絡

clipboard.png

渲染頁面

在解析HTML的過程當中,開始構建DOM樹,當遇到外鏈資源好比CSS/JS,瀏覽器會並行下載 CSS 和 JavaScript,
CSS下載時異步,不會阻塞瀏覽器構建DOM樹,可是會阻塞渲染,
JS會阻塞HTML的解析,需等待腳本下載完成並執行後纔會繼續解析HTML,
並且由於 JS 可能會查詢 CSSOM,因此必須在下載 CSS 文件以前將其阻止,而後才能執行 JavaScript。
img圖片類資源會異步下載,不會阻塞解析,下載完畢後直接用圖片替換原有src的地方。負載均衡

clipboard.png

而後合併DOM樹和CSSOM樹,生成render樹,從 DOM 樹的根節點開始遍歷每一個可見節點,忽略腳本標記、元標記、display: none的節點,對於每一個可見節點,爲其找到適配的 CSSOM 規則並應用它們。
而後開始佈局,從渲染樹的根節點開始進行遍歷,計算每一個節點在網頁的確切位置和大小。
佈局完成後,將渲染樹轉換成屏幕上的像素,顯示頁面。異步

clipboard.png

相關文章
相關標籤/搜索