跳到內容

如何最佳化您的 Next.js 應用程式以用於生產環境

在將您的 Next.js 應用程式投入生產之前,您應該考慮實施一些最佳化和模式,以獲得最佳的使用者體驗、效能和安全性。

本頁提供了在構建應用程式投入生產之前可供參考的最佳實踐,以及您應該瞭解的Next.js 自動最佳化

自動最佳化

這些 Next.js 最佳化預設啟用,無需配置

  • 程式碼拆分 Next.js 會自動按頁面拆分您的應用程式程式碼。這意味著導航時只加載當前頁面所需的程式碼。您也可以考慮在適當的情況下延遲載入第三方庫。
  • 預取 當指向新路由的連結進入使用者視口時,Next.js 會在後臺預取該路由。這使得導航到新路由幾乎是即時的。您可以在適當的情況下選擇停用預取。
  • 自動靜態最佳化 如果頁面沒有阻塞資料需求,Next.js 會自動確定該頁面是靜態的(可以預渲染)。最佳化的頁面可以被快取,並從多個 CDN 位置提供給終端使用者。您可以在適當的情況下選擇伺服器端渲染

這些預設設定旨在提高應用程式的效能,並降低每次網路請求傳輸的資料成本和數量。

開發過程中

在構建應用程式時,我們建議使用以下功能以確保最佳效能和使用者體驗

路由和渲染

資料獲取和快取

  • API 路由 使用路由處理程式訪問後端資源,並防止敏感秘密暴露給客戶端。
  • 資料快取 驗證資料請求是否被快取,並在適當的情況下選擇快取。確保不使用 getStaticProps 的請求在適當的情況下被快取。
  • 增量靜態再生 使用增量靜態再生在頁面構建後更新靜態頁面,而無需重建整個網站。
  • 靜態圖片 使用 public 目錄自動快取應用程式的靜態資產,例如圖片。

UI 和輔助功能

  • 字型模組 透過使用字型模組最佳化字型,該模組自動將您的字型檔案與其他靜態資產一起託管,消除外部網路請求,並減少佈局偏移
  • <Image> 元件 透過使用 Image 元件最佳化圖片,該元件自動最佳化圖片,防止佈局偏移,並以 WebP 等現代格式提供圖片。
  • <Script> 元件 透過使用 Script 元件最佳化第三方指令碼,該元件自動延遲指令碼並防止它們阻塞主執行緒。
  • ESLint 使用內建的 eslint-plugin-jsx-a11y 外掛及早發現輔助功能問題。

安全

  • 環境變數 確保您的 .env.* 檔案已新增到 .gitignore,並且只有公共變數以 NEXT_PUBLIC_ 為字首。
  • 內容安全策略 考慮新增內容安全策略以保護您的應用程式免受各種安全威脅,例如跨站指令碼、點選劫持和其他程式碼注入攻擊。

元資料和 SEO

  • <Head> 元件 使用 next/head 元件新增頁面標題、描述等。

型別安全

  • TypeScript 和 TS 外掛 使用 TypeScript 和 TypeScript 外掛以獲得更好的型別安全性,並幫助您及早發現錯誤。

投入生產之前

在投入生產之前,您可以執行 next build 在本地構建您的應用程式並捕獲任何構建錯誤,然後執行 next start 在類似生產的環境中衡量應用程式的效能。

核心 Web 指標

  • Lighthouse 在隱身模式下執行 Lighthouse,以更好地瞭解使用者如何體驗您的網站,並確定需要改進的領域。這是一個模擬測試,應與檢視現場資料(例如核心 Web Vitals)結合使用。

分析捆綁包

使用 @next/bundle-analyzer 外掛分析 JavaScript 捆綁包的大小,並識別可能影響應用程式效能的大型模組和依賴項。

此外,以下工具可以幫助您瞭解新增新依賴項對應用程式的影響