在 Astro 项目中,OG 图像生成是静态构建的重要环节。原先使用 Vercel 的 Satori + Sharp 方案,随着页面数量超过 150 条,构建时间显著增长。Satori 依赖 JavaScript 与 Yoga WASM,导致 V8 垃圾回收、JS‑WASM 边界切换以及单线程执行等瓶颈。
Takumi(takumi-js)是一款用 Rust 编写的高性能图像引擎,提供与 Satori 完全兼容的 API。迁移后,构建时间从 67 秒降至 42 秒,整体耗时缩短 30%+,CPU 与系统时间也相应下降。迁移过程无需改动现有 JSX 结构,只需:
1. 安装takumi-js并在package.json添加OG_RENDER环境变量切换。
2. 在动态 OG 端点中根据siteConfig.ogRender选择takumiRenderSvg或satori。
3. 通过sharp将 SVG 转为高质量 JPEG。
核心收益
- 零布局重构:保持原有 JSX 结构,直接替换渲染引擎。
- Rust 原生速度:显著减少构建时间与 CPU 占用。
- 易于切换:环境变量即可在 CI 与本地构建间切换,支持双引擎对比。
如果你在 Astro、Next.js 或 SvelteKit 项目中使用静态生成的社交预览,考虑将渲染引擎从 Satori 换成 Takumi,可获得显著的构建性能提升。
