0%

六角網路計概課程

當在瀏覽器輸入一個網址時的流程

這個小節主要是在說明當我們輸入一個網址到瀏覽器中,它會經過 資料傳輸的步驟之後,再接著執行網頁解析的步驟。
以下就是這兩個步驟的詳細經過過程。

資料傳輸

以下會說明,當你輸入一個網址時,瀏覽器會和伺服器之間,先做什麼協定,並在什麼時機點傳輸資料。
舉例:
你輸入 https://ithelp.ithome.com.tw/users/20083608/ironman/3780?page=2 這個網址後,你點開發者模式,點 Network 選項,然後選擇Doc 選項,代表你只要看 documet 的內容,
然後,你的選單裡面只會剩下一個 documet 的內容,你點他,然後,點他的 Timing 選項,你就可以依序看到
DNS Lookup -> initial connection -> SSL -> Requert sent -> Waiting -> Content Download
輸入ip後會經過的請求過程圖

DNS Lookup
代表瀏覽器在解析你的網址 IP

initial connection
建立交握

SSL
建立 SSL 交握

Requert sent
發送請求

Wating
等待資源下載

Content Download
資源下載完畢

接著,會回傳 200 狀態碼給瀏覽器,代表資料傳輸成功。

最後,瀏覽器才會去接析這些下載完成的檔案。

所以,綜合以上的步驟,我們就用下方幾個步驟來描述當你輸入網址時,中間會發生什麼事
瀏覽器進行網址 DNS 的解析,並獲得網址對應 IP -> 進行 TCP 交握 -> 進行 SSL 交握 -> 發出網路請求 -> 獲得 html respone ,並顯示回傳碼 200 -> 解析 HTML 並顯示在瀏覽器上

記得!!網頁一定會先下載該網頁的 HTML 文本。不然,瀏覽器根本沒有內容可以解析。也就不知道你的網頁要長什麼樣子了。

網頁解析

經過上面的介紹之後,我們可以知道,最終我們會先取得目標網站的 HTML 文本,接著,這邊的步驟就是介紹,瀏覽器會如何解析獲得的 HTML 文本。
首先瀏覽器會由上到下去解析 HTML 文本的內容,接著,若在解析的過程碰到像是請求 CSS 檔案的話,就會發出 CSS 檔案的請求,等到 CSS 檔案下載完畢之後,就會去解析這個 CSS 檔案,CSS 檔案解析完成之後,瀏覽器會先做 layout 的動作,這個動作就是先將網頁上的各個 DOM 元素的尺寸 或 布局先放到網頁上。等到 layout 這個步驟完成之後,才會將這些 DOM 元素的內容畫上去,最後,會將各層元素都合併在一起,完成網頁內容的渲染。

開發者模式 performance

那以上這些網頁解析的順序你可以透過網頁開發者模式的一個 Performance 的選項看到解析 HTML 文本和 發出各種檔案請求的順序。
首先,你先到一個網頁中,點它的網頁開發者模式的一個 Performance 的選項。
第二,按下開發者使用介面中,左上角的圓形圖案,將它按成紅色的,代表開始紀錄網頁請求過程,接著,重新整理一次你的頁面,如此,你應該就可以看到這個 performance 選項中出現網頁傳輸和解析的過程囉。
performance記錄過程

瀏覽器是一個區塊一個區塊在解析 HTML 文本的
由上面的開發者頁面中 performance 中,我們可以看到 parse HTML 的部分,瀏覽器會一區塊、一區塊的解析 HTML 文本,它不是直接從第 1 行直接一路解析到文本的最底部。

看出誰拖慢網頁效能
我們可以由上面這個 performance 的內容,看出各種資源的下載總共花了多少時間,藉此得知那些資源的下載有可能拖慢整體的網頁速度 或者 也可以知道是載入 js 檔案中,哪一個函式導致網頁效能變慢的。