內容提要
- 瀏覽器渲染過程
- DNS
- TCP三次握手
- HTTP緩存機制
- CDN與集群
還記得HTTP協議嗎?
- 瀏覽器先輸入一個網址
- 然后瀏覽器先會去互聯網上找DNS服務器進行解析
- 從DNS服務器拿到服務器IP以后,在回到瀏覽器中
- 然后瀏覽器拿著IP去發送HTTP請求
- 服務器處理請求
- 服務器響應請求
- 瀏覽器處理響應
- 繼續請求其它資源
圖一
- 從prompt 到 response是和網絡相關的
- 從processing到onload是和瀏覽器相關的
- prompt for unload
- 這一步是先把之前的頁面干掉
- redirect、upload
- 這一步是銜接前面的,也是和緩存相關的,瀏覽器發一個請求,是從緩存取,還是從服務器拿
- app cache
- 如果要從緩存拿的話,我就處理本地應用cache,如果沒有就無所謂了
- DNS
- 開始解析
- 解析結束
- 有這些事件我們就可以去在這些節點上進行優化
- TCP 層面
- 三次握手
- 開始連接 connectStart
- https連接 secureConnectionStart
- 連接結束 connectEnd
- 然后服務器會拿到你的請求路徑
- Request 發送響應,但是連接還沒完
- Processing 處理文檔
- domLoading 開始載入dom
- dominteractive 把文檔設置為交互狀態
- domContentLoaded 觸發這個事件
- domComplete 瀏覽器把文檔設置為complete(表示文檔與網絡相關的修改已經結束了)
- onLoad (這個onload和,綁定那個onload事件是可以對應的)
- loadEventStart
- loadEventEnd
上面這是一次連接,然后下次再發請求的時候,回直接從Request開始。
是因為瀏覽器做了個優化,可以復用這個連接。
資源少就一個tcp連接,多任務就會打開多個tcp連接。keep-Alive模式
優化的點:
- 網絡:DNS、TCP連接
- 傳輸
- 瀏覽器
- 緩存,包括瀏覽器本身的緩存和服務器中的緩存
DNS:
- DNS是域名系統,用于將域名轉化為IP
- 頂級域名
- 域名資源記錄
- 域名服務器
- 域名解析
TCP三次握手與四次揮手(如果少一次就不能保證,多一次就浪費)圖二
-
三次握手
- 你發起連接請求
- 服務源接受你發送的連接,然后服務源會給你發送一個數據
- 然后你再發一條數據,告訴服務源我收到了
-
四次揮手
- 瀏覽器給服務源發送數據說我要掛了。
- 服務源響應說我收到你的請求了可以掛,我也要掛了。
- 然后瀏覽器發送數據可以斷開。
- 服務源斷開連接。
osiiso模型和TCPIP模型
- 應用層(data數據。HTTP、FTP、DNS、DHCP)
- 表示層
- 會話層(TCPIC把上面三個合并為應用層。HTTP就在這層。這一層會加一個)
- 傳輸層(TCP協議、UDP協議)
- 網絡層(它封裝的是二進制,它是幫助你找到對方主機,IP、ICMP這個是ping發的包)
- 數據鏈路層(這一塊是做了封裝,數據鏈路層傳遞的是電脈沖信號,也是有一種規則的。網卡的MAC地址。ARP是在局域網廣播MAC地址,也有這種攻擊,如我叫小明。)
- 物理層(硬件、網卡、網線、承載你數據的基礎設施。純硬件)
tcpdump
- -n 以ip地址顯示
- host 192.168.0.200 and 111.13.100.92
- -i enp1s0 顯卡地址
curl
- 用命令行進行遠程http通訊
CDN
- 主機模式
- CDN離你最近的那臺服務器
ttl最多64
緩存機制:
- Etag