博客性能優化筆記 | 99分

閒着沒事,拿 lighthouse 測了一下博客網站的性能評測,發現診斷出的問題還挺多,就順手優化了一下。

這篇文章將記錄這個優化的過程。

優化前後對比

lighthouse 檢測結果

優化前 優化後

性能面板檢測結果

FCP DOMContentLoaded LCP
優化前 764ms 1798ms 1864ms
優化後 496ms 507ms 496ms
  • FCP(First Contentful Paint)
  • LCP(Largest Contentful Paint)

檢測工具

使用 Chrome 自帶的 lighthouse 和 性能面板進行測試。

性能面板 lighthouse

發現問題

性能面板 | Performance

通過截圖可以觀察到每個時間的頁面變化

發現的問題:

  1. 文章列表渲染後,文章封面圖加載緩慢
  2. 圖片完成加載時間過長(封面,頭像圖片)
  3. 佈局渲染期間發生明顯變化
  • 友鏈列表加載完成後
  • 左上頭像加載完成

lighthouse

測試後會給到優化建議。

這裏挑一些後面用到的

  1. 使用新的圖片格式(WebP and AVIF)
  2. 減少沒用到的CSS文件大小
  3. img 沒有明確的寬高屬性
  4. 資源傳輸壓縮(gzip, brotli 等)
  5. 加載適當大小的圖片(避免超過要展示的大小)
  6. 避免超大的資源加載阻塞網絡(主要是一些超大的圖片和js)

優化過程

圖片優化

解決:1,2,4,8,9

① 裁剪爲渲染的大小

② 格式調整爲WebP格式

我的圖片都是放在圖牀上的(七牛雲又拍雲繽紛雲)。

這一步我直接使用 OSS(對象存儲) 提供的圖片加載裁剪功能即可。

配置目標:寬高裁剪爲 120px * 80px,格式調整爲 WebP 格式。

配置處理樣式示例

七牛雲 又拍雲 繽紛雲

使用:在原有的資源上添加對應的後置即可

  • 七牛雲:url~cover.webp
  • 又拍雲:url-cover
  • 繽紛雲:url!style:cover

代碼中的體現↓

封面 友鏈頭像 頭像

oml2d模型資源優化

博客左下角的看板娘加載優化。

解決:9

① 資源全部放在自己的 OSS 通過CDN加載(有gzip壓縮,更快的訪問速度)

② 將模型用到的PNG圖片壓縮

使用之前做的圖片在線壓縮工具

壓縮後減少了 88% 的體積,視覺上看不出變化。

網絡優化

解決:7,9

① 第三方資源使用 OSS存儲 + CDN加載

② 訪問使用 HTTP3/HTTP2

新的協議加載資源,用上多路複用的特性。

啓用前提資源支持 HTTPS 訪問(配置SSL證書),才能啓用 HTTP2/3。

配置 HTTPS 時使用最新的 TLS1.3 版本,更快的加解密速度。

下面是在各平臺開啓相關配置示意。

七牛雲 又拍雲 繽紛雲

優化前後對比

優化前 優化後

佈局優化

解決:3,6

目標:減少觸發 “頁面迴流重繪” 的範圍和次數。

① 針對圖片,限定具體渲染的寬高,避免圖片加載後佈局發生變化

② 針對後渲染區域,限定其容器的寬度,避免渲染後影響佈局

減少無用代碼

解決:5

① 移除無用的 js 腳本或者 CSS 資源

大概看了一下,項目裏額外依賴的 element-plus 樣式文件佔大頭。

將全量引入,手動調整爲按需引入。

最終效果

性能面板 lighthouse

優化後的性能指標

  • FCP(First Contentful Paint):496ms
  • DOMContentLoaded:507ms
  • LCP(Largest Contentful Paint):496ms

訪問 https://sugarat.top 可以看到效果還是很明顯的。

總結

  1. 圖片:壓縮,加載合適尺寸,優先使用 WebP 格式
  2. 網絡:HTTPS + HTTP2/3,OSS + CDN
  3. 佈局:減少迴流重繪範圍與次數
  4. 資源:移除無用代碼,無用的第三方資源加載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章