性能優化之HTTP

內容提要

  • 瀏覽器渲染過程
  • DNS
  • TCP三次握手
  • HTTP緩存機制
  • CDN與集群

還記得HTTP協議嗎?

  1. 瀏覽器先輸入一個網址
  2. 然后瀏覽器先會去互聯網上找DNS服務器進行解析
  3. 從DNS服務器拿到服務器IP以后,在回到瀏覽器中
  4. 然后瀏覽器拿著IP去發送HTTP請求
  5. 服務器處理請求
  6. 服務器響應請求
  7. 瀏覽器處理響應
  8. 繼續請求其它資源
圖一
  • 從prompt 到 response是和網絡相關的
  • 從processing到onload是和瀏覽器相關的
  1. prompt for unload
    • 這一步是先把之前的頁面干掉
  2. redirect、upload
    • 這一步是銜接前面的,也是和緩存相關的,瀏覽器發一個請求,是從緩存取,還是從服務器拿
  3. app cache
    • 如果要從緩存拿的話,我就處理本地應用cache,如果沒有就無所謂了
  4. DNS
    • 開始解析
    • 解析結束
    • 有這些事件我們就可以去在這些節點上進行優化
  5. TCP 層面
    • 三次握手
    • 開始連接 connectStart
    • https連接 secureConnectionStart
    • 連接結束 connectEnd
    • 然后服務器會拿到你的請求路徑
  6. Request 發送響應,但是連接還沒完
  7. Processing 處理文檔
    • domLoading 開始載入dom
    • dominteractive 把文檔設置為交互狀態
    • domContentLoaded 觸發這個事件
    • domComplete 瀏覽器把文檔設置為complete(表示文檔與網絡相關的修改已經結束了)
  8. onLoad (這個onload和,綁定那個onload事件是可以對應的)
    • loadEventStart
    • loadEventEnd

上面這是一次連接,然后下次再發請求的時候,回直接從Request開始。

是因為瀏覽器做了個優化,可以復用這個連接。

資源少就一個tcp連接,多任務就會打開多個tcp連接。keep-Alive模式

優化的點:

  1. 網絡:DNS、TCP連接
  2. 傳輸
  3. 瀏覽器
  4. 緩存,包括瀏覽器本身的緩存和服務器中的緩存

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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容