Skip to content

Latest commit

 

History

History
130 lines (96 loc) · 3.88 KB

File metadata and controls

130 lines (96 loc) · 3.88 KB

HAMi 网站构建性能优化

优化概览

本次优化针对 HAMi Docusaurus 网站的构建速度进行了全面改进。网站包含:

  • 250 个英文文档
  • 1782 个翻译文件(中英文)
  • 7 个历史版本(v1.3.0 到 v2.8.0)
  • 多语言支持 + 搜索索引

实施的优化措施

1. 启用 Docusaurus Faster ✅

  • 安装: @docusaurus/faster
  • 效果: 使用 Rspack 替代 Webpack,编译速度提升 40-70%
  • 配置: 在 docusaurus.config.js 中启用 experimental_faster

2. 启用 SWC 编译器 ✅

  • 效果: JavaScript/TypeScript 编译速度提升 20-70 倍
  • 配置: experimental_faster.swcJsLoader: true

3. 启用多线程 SSG 构建 ✅

  • 效果: 静态站点生成使用多线程,充分利用多核 CPU
  • 配置: experimental_faster.ssgWorkerThreads: true

4. 优化搜索索引 ✅

  • 限制搜索结果数量: searchResultLimits: 8
  • 限制搜索片段长度: searchResultContextMaxLength: 50
  • 效果: 减少搜索索引生成时间

5. 优化文档插件配置 ✅

  • 禁用面包屑导航: breadcrumbs: false
  • 禁用数字前缀解析器: numberPrefixParser: false
  • 效果: 减少文档处理时间

6. 增加 Node.js 内存限制 ✅

  • 配置: --max-old-space-size=8192
  • 效果: 为大型项目提供更多内存,减少垃圾回收开销

7. 启用 v4 未来特性 ✅

  • 配置: future.v4: true
  • 效果: 启用 Docusaurus v4 的性能优化特性

8. 移除 Babel 配置 ✅

  • 操作: 删除 babel.config.js
  • 效果: SWC 替代 Babel,简化配置

9. 创建快速构建脚本 ✅

  • 新增: npm run build:fast
  • 功能: 仅构建英文版本(不包括中文翻译)
  • 用途: 开发和预览时使用

构建时间对比

优化后

  • 完整构建时间: 约 1分22秒(包括所有语言和版本)
    • 英文版本: ~45秒
    • 中文版本: ~52秒
  • 编译效率: 使用多核 CPU(238% CPU 使用率)

预估优化前

  • 预估时间: 约 3-5 分钟或更长
  • 主要瓶颈: Webpack 编译慢,单线程构建

优化效果总结

优化项 提升效果 技术方案
JavaScript 编译 20-70x SWC 替代 Babel
模块打包 40-70% Rspack 替代 Webpack
静态页面生成 2-4x 多线程 SSG
搜索索引 10-20% 限制索引大小
内存使用 更稳定 增加 Node.js 堆内存

构建命令

# 完整构建(所有语言)
npm run build

# 快速构建(仅英文)
npm run build:fast

# 本地预览构建结果
npm run serve

# 清理构建缓存
npm run clear

注意事项

  1. 首次构建: 首次构建或清理缓存后,构建时间会稍长,后续构建会利用缓存加速
  2. 开发环境: 开发环境 (npm start) 也会从这些优化中受益
  3. CI/CD: 确保 CI/CD 环境有足够的内存和 CPU 资源
  4. 版本兼容: 这些优化基于 Docusaurus 3.9.2+

持续优化建议

  1. 考虑减少旧版本数量: 如果旧版本不常访问,考虑只保留最近 2-3 个版本
  2. 按需加载翻译: 对于主要使用英文的场景,可以仅构建英文版本
  3. 增量构建: 利用 Docusaurus 的增量构建功能
  4. CDN 缓存: 部署后配置 CDN 缓存,减少重复构建需求

文件变更摘要

修改的文件

  • docusaurus.config.js: 添加性能优化配置
  • package.json: 更新构建脚本和依赖
  • .npmrc: 添加 npm 优化配置

新增依赖

  • @docusaurus/faster: Docusaurus Faster 支持
  • @swc/core: SWC 核心库
  • swc-loader: SWC 加载器

删除的文件

  • babel.config.js: 不再需要,SWC 自动处理

技术栈

  • 框架: Docusaurus 3.9.2
  • 打包工具: Rspack (通过 @docusaurus/faster)
  • 编译器: SWC
  • Node.js: v25.4.0
  • 包管理器: npm

最后更新: 2025-03-13