瀏覽器的工作流程(原理)

流程概要

看了《重學前端》總結了一下,從用戶輸入網址發起請求到頁面渲染顯示的過程:
通過url請求獲得字符流,把字符流變成詞(token)流,把詞(token)流構造成DOM樹,把不含樣式信息的DOM樹應用CSS規則,變成包含樣式信息的DOM樹,並且根據樣式信息,計算了每個元素的位置和大小。最後根據這些樣式信息和大小信息,爲每個元素在內存中渲染它的圖形,並且把它繪製到頁面對應的位置。

1. http請求

  • 接受HTTP請求後,就產生了流式的數據,後續的DOM樹構建、CSS計算、渲染、合成、繪製,都是儘可能地流式處理前一步的產出:即不需要等到上一步驟完全結束,就開始處理上一步的輸出,這樣我們在瀏覽網頁時,纔會看到逐步出現的頁面。
  • 301和302兩個狀態表示當前資源已經被轉移,只不過一個是永久性轉移,一個是臨時性轉移。實際上301更接近於一種報錯,提示客戶端下次別來了。
  • 503:服務端暫時性錯誤,可以一會再試。
  • 常見的HTTP頭,這些頭是我認爲前端工程師應該做到不需要查閱,看到就可以知道意思
  • 客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成; HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。
  • HTTPS有兩個作用,一是確定請求的目標服務端身份,二是保證傳輸的數據不會被網絡中間節點竊聽或者篡改。
  • TLS加密通道,TLS構建於TCP協議之上,它實際上是對傳輸的內容做一次加密,所以從傳輸內容上看,HTTPS跟HTTP沒有任何區別
  • 在HTTP 1.0中,客戶端的每一個HTTP請求都必須通過獨立的TCP連接進行處理,2.0可以支持TCP連接複用和服務端推送

2. 解析與構建

  • 標籤(body字符流)拆分成詞(token)的過程

1 <p“標籤開始”的開始;
2 class=“a” 屬性;
3 > “標籤開始”的結束;
4 text text text 文本;
5 </p>標籤結束

  • 使用棧來構建DOM樹

3. CSS規則應用

  • DOM構建過程中,每拿到一個新構建好的元素就去檢查,它匹配到了哪些規則,再根據規則的優先級,做覆蓋和調整。是一個流式的過程
  • 選擇器的出現順序,必定跟構建DOM樹的順序一致(父元素–>子元素)
  • 選擇器連在一起寫

4. 頁面排版

  • “排版”這個概念最初來自活字印刷,是指我們把一個一個的鉛字根據文章順序,放入板框當中的步驟,排版的意思是確定每一個字的位置。
  • 瀏覽器支持元素和文字的混排,元素被定義爲佔據長方形的區域,還允許邊框、邊距和留白,這個就是所謂的盒模型。
  • 正常流、絕對定位元素、浮動定位元素
  • 瀏覽器支持改變排版方向,不一定是從左到右從上到下,所以我們把文字依次書寫的延伸方向稱爲主軸,換行延伸的方向,跟主軸垂直交叉,稱爲交叉軸。
  • 表格相關排版、flex排版和grid排版,它們有一個顯著的特點,那就是子元素之間具有關聯性

5. 渲染

  • “渲染”,是個非常有意思的翻譯,中文裏“渲染”這個詞是一種繪畫技法,是指沾清水把墨塗開的意思。
  • 它在圖形學的意義,也就是把模型變成位圖(柵格)的過程。瀏覽器中渲染這個過程,就是把每一個元素對應的盒變成位圖。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章