【筆記摘要】前端效能

创业男生發表於2024-08-10

前端領域提升效能,可以考慮以下幾個關鍵方向:

網路最佳化:

減少HTTP請求:透過合併檔案、使用雪碧圖、CSS內聯小圖片等方式減少請求次數。
開啟HTTP/2或HTTP/3:利用多路複用、頭部壓縮等特性提升傳輸效率。
DNS預解析:使用<link rel="dns-prefetch">預解析DNS,減少域名解析時間。
使用CDN:全球分佈的內容分發網路加速資源載入。
資源快取:合理設定快取策略,如ETag、Cache-Control,減少重複下載。
頁面渲染最佳化:

最佳化Critical Rendering Path(關鍵渲染路徑),優先載入首屏所需資源。
使用<link rel="preload">預載入關鍵資源。
CSS放置於<head>,JavaScript置於</body>底部或非同步載入,避免阻塞渲染。
透過Media Queries或<link rel="stylesheet" media="print">延遲非關鍵CSS載入。
JavaScript最佳化:

程式碼拆分與懶載入:利用動態匯入(import()), webpack的code splitting等功能按需載入程式碼。
避免阻塞渲染的JavaScript:使用async或defer屬性。
最佳化程式碼執行:減少DOM操作,使用事件委託,避免記憶體洩漏。
圖片與媒體最佳化:

圖片懶載入:只在圖片進入可視區域時載入。
選擇合適的圖片格式:WebP、AVIF等現代格式提供更好的壓縮率。
影像大小適配:生成不同尺寸圖片,適應不同裝置,使用srcset和sizes屬性。
Webpack打包最佳化:

Tree Shaking:移除未使用的程式碼。
UglifyJS或Terser壓縮程式碼。
SplitChunksPlugin 分割公共程式碼和庫到單獨檔案。
框架特定最佳化:

Vue:合理使用v-if和v-show,避免不必要的重新渲染;利用Vue的非同步元件和路由懶載入;最佳化v-for的key使用;及時銷燬不再使用的事件監聽器。
React:使用React.memo防止不必要的元件渲染;合理使用Context API代替props drilling;按需載入元件。
服務端渲染(SSR)或靜態站點生成(SSG):

提供首屏快速渲染,改善SEO。
效能監控與分析:

使用Lighthouse、WebPageTest、Chrome DevTools等工具定期進行效能測試和審計。
監控真實使用者效能指標(RUM),如First Contentful Paint (FCP)、 Largest Contentful Paint (LCP)、Time to Interactive (TTI)等。

漸進載入
漸進載入是指先載入低質量甚至模糊的圖片,然後隨著頁面繼續載入,使用LQIP(低質量圖片佔位符)技術替換為高質量的完整版本。

這種技術確實提高了首次進行有意義繪製的時間

相關文章