#### 瀏覽器獲取資源過程
1. 先去查找緩存,檢測緩存是否過期,直接返回緩存的內容
2. 看域名是否被解析過,DNS協議,將域名解析成ip地址(DNS基于UDP協議)
3. 如果請求時https,那么會做一個ssl協商,保證請求的安全性
4. 通過ip地址來進行尋址,排隊等待,最多能發送6個http請求
5. 創建tcp連接,三次握手
6. 利用tcp傳輸數據,拆分為數據包,有序,可靠,服務器會按順序來接收
7. 發送http請求(請求行,請求頭,請求體)
8. tcp連接默認不會斷開,因為有個字段叫keep-alive,為了下次傳輸數據時,可以復用上次創建的連接
9. 服務器收到數據后,發送響應數據,響應行,響應頭,響應體
10. 服務器狀態碼:301,302會進行重定向,如果重定向了就會重新發另一個請求
11. 服務器狀態碼304,去查詢瀏覽器緩存進行返回
#### 瀏覽器解析資源過程
1.將html轉化為DOM樹
2.將css解析成cssom樣式表
```
css link標簽放在最下面可能會導致css的重繪
構件dom樹的時候不會被css解析阻塞,但是渲染render tree的過程會被css阻塞
js阻塞html解析,也會阻塞html渲染,js要等上面的css加載完畢,保證js可以操作樣式
```
3.計算出DOM樹種每個節點的具體樣式(Attachment)
4.創建render tree,將dom樹中的可見節點,添加到布局樹種,并計算節點渲染到頁面的坐標位置layout
5.通過布局樹,進行分層
### 備用知識
#### 1.網絡七層模型
物聯網淑慧試用
應用層
+ 應用層
+ 表示層
+ 會話層
傳輸層 (TCP, UDP)
網絡層
數據鏈路層
物理層
#### 2.http歷史
http0.9:負責傳輸的html,最早的時候沒有請求頭和響應頭
http1.0:提供了http的header,根據了header的不同,來處理不同的資源
http1.1:默認開啟了keep-alive,tcp的長連接,鏈接復用,管線化(同時可以建立6個鏈接)
? 服務器處理多個請求(對頭阻塞問題)
http2:
+ 用同一個tcp鏈接來發送數據,一個域名一個tcp(多路復用),多個請求用一個tcp鏈接
+ 頭部壓縮
+ 服務器可以推送數據給客戶端
http3:解決了tcp的隊頭阻塞問題,采用了udp,并在udp上一層加了一層quic協議
- JavaScript
- 1. DOM事件流
- 2. 模擬 new, Object create(), bind
- 5. 封裝函數進行字符串駝峰命名的轉換
- 6. 什么是promise
- 7. 判斷一個數是否為數組
- 10. __proto__和prototype以及原型,原型鏈,構造函數
- 11. 繼承
- 12. 閉包
- 13. 回調函數
- 14. var 和 let 區別
- 15. this、bind、call、apply
- 16.undefined和null的區別
- 17.內存泄漏
- 18.垃圾回收機制
- html css
- 1. 元素垂直水平居中
- 2. 清除浮動
- 3. bootstrap柵格系統
- 4. px rpx em rem vw 的區別
- 5. 兩種盒子模型
- 6. 合集
- web類
- 1. html5的新特性以及理解(web標簽語義化)
- 2. 什么是路由,關于前端路由和后端路由
- 3. 對優質代碼的理解
- 4. cookie 和 sessionStorage和localStorage
- 5. 瀏覽器內核
- 6. http 狀態碼
- 7. href 和 src 的區別
- 8. link 和 @import 的區別
- 9. http 狀態碼
- 10. websocket
- 11. 瀏覽器解析url
- 12.http緩存
- vue
- 1.vue2和vue3有哪些區別
- 1. 對 mvvvm 的理解
- 2. mvvm的優缺點
- 3. 數據雙向綁定的原理
- 4. 生命周期
- 5. 組件如何通信
- 6. computed和watch的區別
- 7. proxy 和 Object.defineProperty
- 8. 虛擬dom和 diff算法
- 9. 路由的嵌套與傳參
- 10. 路由導航鉤子
- 11. axios 的理解
- 12. vue自定義指令 diretive
- 13. diff 的實現
- 14. 實現一個簡單的雙向綁定
- 15. 為什么 data 是一個函數
- 題譜
- js
- 手寫篇
- css
- vue
- react
- 算法
- 自我介紹
- 八股文
- 源項目地址
- 1.計算機網絡
- 2.瀏覽器
- 3.html和css
- 4.javascript
- 6.typescript
- 7.vue
- 8.react
- 大廠面試
- 面試題大全
- 常見性能優化
- 面試實戰
- 面試分析
- 押題
- 1.微前端在項目中的實際應用
- 2.性能優化
- vue相關
- 1.說一說HashRouter和HistoryRouter的區別和原理
- 無敵之路,牛客網面試題自測記錄
- 前端基礎
- 1.html
- 2.js基礎
- 珠峰性能優化
- WebWorker
- url到渲染
- 瀏覽器加載機制
- 自我介紹1
- 手寫題
- 1.compose
- 2.setTimeout模擬setInterval
- 3.手寫數組拍平
- 4.手寫promise.all
- 5.手寫深拷貝
- webpack
- 實戰