前端部分效能優化

2021-08-14 11:12:41 字數 1613 閱讀 1123

頁面效能優化是前端從未停止**的問題,雅虎將 web 頁面的優化分為 7 部分,總結了 35 條軍規。這裡,總結頁面從輸入回車到內容展現這一過程中的優化方法,主要目的是為了縮短頁面的渲染時間,使頁面內容盡可能快的展示出來。

初次載入頁面,瀏覽器請求資源到接收到該資源之間,需要經歷一段漫長的網路傳輸過程。

dns 解析

瀏覽器請求乙個網路資源,如 html、css、js、img等,如 baidu.com,這是網域名稱,方便人們記憶,但機器只認 ip 位址。為了能夠找到正確的伺服器,就需要 dns 解析,找到對應的 ip。當瀏覽器遇到乙個新的網域名稱,就需要進行一次 dns 解析。

頁面中的外部資源網域名稱越多,需要的 dns 解析總時間就越長。因此,外部資源的網域名稱個數應盡可能的少。

根據 ip 位址請求資源

當 dns 解析完,獲取到對應的 ip 位址後,瀏覽器會向該伺服器傳送請求,建立 tcp 連線。不同瀏覽器對於同一網域名稱的併發連線數量均有限制,2~8個。如果外部資源均部署在同一伺服器上,當數量超過瀏覽器的限制時,就會造成阻塞,後面的資源需要等待前面的資源接受完後才能傳送請求。也就是說,外部資源應該盡可能多的部署到不同的伺服器上,但這與上文的 dns 解析優化矛盾了。因此,需要做乙個衡量,外部資源應該部署到多少個不同的伺服器上。

tcp 連線優化

tcp 每次連線都需要經過三次握手才能建立起來,這是乙個耗時的操作。

可以通過合併靜態資源,如合併 css、js,使用雪碧圖的方式減少外部資源請求次數,從而減少 tcp 連線次數。

(雅虎軍規:避免 img 的 src 為空)src為空,瀏覽器還是會向伺服器傳送請求的。

資源傳輸

除去網路因素,資源傳輸所需的時長取決於該資源的大小,以及接收方與傳送方的物理距離。

(雅虎軍規:壓縮 css、js)減少檔案體積。

(雅虎軍規:使用 cdn)將靜態檔案部署到 *** 上,減少接收方與實際傳送方的距離。

crp瀏覽器從接收到 html 檔案,到頁面內容繪製出來之間同樣發生了很多事情。瀏覽器初次繪製頁面的過程稱為「關鍵渲染路徑」。

對 crp 不熟悉的可以參看理解關鍵渲染路徑這篇譯文。

crp 主要有 6 部分:

1、構建 dom 樹

2、構建 cssom 樹

3、執行 js

4、建立 render 樹

5、布局

6、繪製

構建 dom 樹

當瀏覽器接收到 html 檔案後,開始解析檔案,構建 dom 樹。(雅虎軍規:減少 dom 元素的數量)dom 元素數量越少,html 檔案體積就越小,構建 dom 樹的速度也就越快。由於 dom 樹的構建過程是乙個深度遍歷的過程,dom 樹結構層次不要過深能夠加快遍歷,其次,也是為了後續 js 能夠更快的訪問 dom 。

構建 cssom 樹

(雅虎軍規:將樣式表放在頂部)在解析 html 時,遇到外部資源瀏覽器會立即傳送請求。盡可能快的載入樣式表,構建 cssom 樹,與 dom 樹一起建立 render 樹,讓頁面能夠逐步渲染,盡快的現實出內容。

執行js

(雅虎軍規:將 js 放在底部)因為 js 指令碼會阻塞 html 的解析,不管是內聯還是外聯,一般會將 js 放置在底部。

布局、繪製

這裡會涉及到頁面的回流(reflow)和重繪(repaint)。頁面如果有

前端效能優化

1.減少http請求次數 css sprites 在國內很多人叫css精靈,是一種網頁應用處理方式。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。對於當前網路流行的速度而言,不高於200kb的單張的所需載入時間基本是...

前端效能優化

在開發好頁面後,如何讓頁面更好更快的執行 從前端的角度來看,效能可以分為兩個方向 從使用者角度來看,乙個是頁面載入的很快,另乙個是頁面使用起來非常流暢 輸入了url 瀏覽器開始解析 查詢本地快取 dns解析 建立連線 伺服器處理 伺服器響應 客戶端收到響應 解析html 然後開始渲染頁面 使用者可以...

前端效能優化

隨著現在 越來越酷炫,各種,資源庫,動畫等等用的越來越多,在使用者視覺和功能的提公升的同時,效能也成為乙個必須考慮的點。有人說 乙個 開啟時間超過8s,網民就會流失70 以上。這種說法我覺得不是很正確的,除非是非常重要 必須要使用的 否則超過5s我基本直接關了,體驗太差。所以,使用者 忍讓 是有極限...