記錄性能優化相關的知識。html
DOMContentLoaded:
DOM樹構建完成的時間Load:
頁面加載完畢。即DOM樹構建完成後,加載完圖片等外部資源的時間Finish:
是頁面上全部 HTTP 請求發送到響應完成的時間算法
根據 HTTP 請求的不一樣階段來進行排序segmentfault
Start Time:
請求開始的時間Response Time:
資源開始下載的時間End Time:
請求結束的時間Total Duration:
請求整個完整過程的時間Latency
請求等待響應的時間瀏覽器
以下圖所示,Waterfall 右鍵以後選擇 Total Duration,則請求按照整個持續時間排序,不一樣的顏色表明不一樣的資源文件,淺色的部分表明資源的等待時間,深色的部分表明下載時間。緩存
圖片優化的幾種方式:性能優化
CSS Sprite 和 BASE64 的對比網絡
各個類型圖片的對比dom
defer 屬性:
渲染 DOM 的過程將和 JS 腳本加載的過程異步進行,可是 JS 腳本的執行要在全部元素解析完成以後(只適用於外部腳本文件)async 屬性:
加載和渲染 DOM 的過程將和 JS 腳本的加載與執行的過程異步進行(只適用於外部腳本文件)具體區別見下圖:異步
綠色線表明 HTML 解析;藍色線表明 JS 腳本讀取時間;紅色線表明 JS 腳本執行時間。async
preload 提供了一種聲明式的命令,讓瀏覽器提早加載指定資源(加載後並不執行),在須要執行的時
候再執行。
使用:
prefetch: 告訴瀏覽器將來可能會使用到的某個資源,瀏覽器就會在閒時去加載對應的資源。
使用:
Brotli 壓縮算法具備多個特色,最典型的是如下 3 個:
默認狀況下瀏覽器會對頁面中和當前域名不在同一個域的域名進行預獲取,而且緩存,這就是隱式的 DNS Prefetch。若是想對頁面中沒有出現的域進行預獲取,那麼就要使用顯示的 DNS Prefetch 。
DNS 預解析
是瀏覽器試圖在用戶訪問連接以前解析域名,若是一個頁面有多個域名的連接,DNS 預解析
會在用戶點擊連接以前,使用最少的CPU和網絡在後臺進行解析。當用戶點擊已經預解析的域名時,能夠平均減小 200 ms 的等待時間,提高用戶體驗 。
<meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="//domain.com">
https://segmentfault.com/a/11...
DNS預解析: https://www.cnblogs.com/golov...