前端性能的一個重要指標是頁面加載時間,不只事關用戶體驗,也是搜索引擎排名考慮的一個因素。css
來自 Google 的數據代表,一個有 10 條數據 0.4 秒能加載完的頁面,變成 30 條數據 0.9 秒加載完以後,流量和廣告收入降低 90%。 Google Map 首頁文件大小從 100KB 減少到 70-80KB 後,流量在第一週漲了 10%,接下來的三週漲了 25%。 亞馬遜的數據代表:加載時間增長 100 毫秒,銷量就降低 1%。html
關於前端性能優化的文章的看的很多,可是大部分文章都是淺嘗輒止或者是零零散散的優化手段拼湊在一塊兒。這篇文章將從<從輸入Url到瀏覽器完成頁面渲染>的角度分析每個過程當中能夠進行哪些性能優化? 前端
首先先來了解一下三個重要的性能指標:ajax
相信能點進這篇文章的盆友對整個過程確定有充分的瞭解。接下來我將逐一對每一個階段能進行哪些優化進行分析~瀏覽器
DNS解析: 用戶輸入URL後,瀏覽器要查詢域名對應的ip地址,這個過程要花費20-120ms。DNS查詢完成以前,瀏覽器沒法從服務器下載任何數據。
緩存
優化方案: 經過瀏覽器配置引入DNS緩存 性能優化
發送HTTP請求:服務器
Web 前端 80% 的響應時間花在圖片、樣式、腳本等資源下載上。瀏覽器對每一個域名的鏈接數是有限制的,減小HTTP請求次數是縮短響應時間的關鍵。cookie
優化方案 : 核心在於減小HTTP請求,以及減小請求大小。 網絡
background-image
和background-positon
來減小HTTP請求(HTTP2.0能夠並行發送HTTP請求後,這個方案再也不適用)服務器處理請求並返回資源
網站 80-90% 響應時間消耗在資源下載上,減小資源下載時間是性能優化的黃金髮則。
優化方案 : 壓縮響應文件大小,以及加快服務器的響應資源的速度
頁面渲染過程
頁面渲染過程: 構建DOM樹 -> 構建CSS規則樹 -> 構建渲染樹 -> 構建layout樹 -> 計算layOut -> Painting
優化方案: 從對減小DOM操做以及避免阻塞的角度進行優化
<head>
中, js腳本放在頁面底部 。把樣式表放在 中可讓頁面漸進渲染。瀏覽器下載腳本時,會阻塞其餘資源並行下載。所以,最好將腳本放在底部,以提升頁面加載速度。link
代替`import