瀏覽器首先使用 http 協議 或者 https 協議,向服務端請求頁面。
把請求回來的 html **經過解析,構建成 dom 樹。
計算 dom 上的屬性。
最後根據 css 屬性對元素逐個進行渲染,得到記憶體中的點陣圖。
乙個可選的步驟是對位圖進行合成,這會極大地增加後續繪製的速度。
合成之後,再繪製到介面上。
http 協議是基於 tcp 出現的,tcp 協議是一條雙向的通道,http 在 tcp 的基礎上,規定了 request - response 的模式。這個模式決定了通訊必定是由瀏覽器端首先發起的。
request line | response line + headers + body
3xx:表示請求的目標有變化,希望客戶端進一步處理
4xx:客戶端請求錯誤
5xx:服務端請求錯誤
對於前段,1xx基本遇不到,原因是1xx 狀態被瀏覽器 http庫直接處理掉了,不會讓上層應用知曉。
2xx 系列的的 200,請求成功
3xx 系列,301 表示永久轉移,告訴使用者以後別再來這個 url 了,302 表示暫時性轉移,以後資源還會回來。
304 ,前端必會的乙個狀態碼。產生這個狀態碼的前提是,客戶端本地有了快取,並且在 request 中告訴了服務端,當伺服器通過時間或者 tag ,發現沒有更新的時候,就會返回乙個不含 body 的 304 狀態
在基於 http 的基礎上使用了加密通道來傳輸,保證了網頁資料傳輸的安全性。
https 是使用加密通道來傳輸 http 的內容。但是 https 首先與服務端建立一條 tls 加密通道。tls 構建於 tcp 協議之上,它實際上是對傳輸的內容做一次加密,所以從傳輸內容上看,https 跟 http 沒有任何區別。
http 2 是 http 1.1 的公升級版本。
http 2.0 最大的改進有兩點,一是支援服務端推送,二是支援 tcp 連線復用。
服務端推送能夠在客戶端傳送第乙個請求到服務端時,提前把一部分內容推送給客戶端,放入快取當中,這可以避免客戶端請求順序帶來的並行度不高,從而導致的效能問題。
tcp 連線復用,則使用同乙個 tcp 連線來傳輸多個 http 請求,避免了 tcp 連線建立時的三次握手開銷,和初建 tcp 連線時傳輸視窗小的問題。
note: 其實很多優化涉及更下層的協議。ip 層的分包情況,和物理層的建連時間是需要被考慮的。
瀏覽器如何工作
吃飽沒事,隨便翻譯一篇文章。現在的瀏覽器可以做很多事,如chrome可以執行多種應用外掛程式。但我覺得你可能對如何載入展示網頁感興趣。網路是c s架構的。瀏覽器僅僅是其中的一半 客戶端 另一半是等待客戶端發請求的伺服器。首先,瀏覽器要找到web伺服器的位址。它問作業系統伺服器的名字 作業系統便查詢本...
瀏覽器是怎樣工作的?
當瀏覽器傳送乙個請求到接受所有響應資料,這個過程發生了什麼?開發模式下開啟航班管家 h5,通過dev tool分析jipiao 檔案請求,看從connection start到content download期間,瀏覽器做了哪些事 圖 1 請求並得到乙個網路資源 檔案的過程 及時間 queued.瀏...
瀏覽器是如何渲染的
先上一張圖 注意事項 1,瀏覽器會開啟另乙個執行緒去獲取css等資源,但這並不意味著js是多執行緒,主要執行js 的只有乙個主線程,所以js是單執行緒的 2,瀏覽器收到html檔案後,會遍歷文件節點,生成dom樹,script標籤頁會在樹中,並且會把當前節點的所有子節點都構建好後才會去構建當前節點的...