Astro 7 的构建从 62.7 秒压到 24.2 秒——这次不是换机器,是把整条编译链路搬进了 Rust
Astro 官方的基准测试里,astro.build 自己的构建时间从 62.70 秒掉到了 24.24 秒。不是换了更快的机器,也不是把测试删掉了一半——是把整个 .astro 编译器用 Rust 重写了一遍,顺手连 Markdown 流水线、渲染引擎、打包器一起换了。这个数字意味着什么:一个 8000+ 页面的文档站,构建从 386.89 秒降到 261.94 秒,大概省下了两分钟。如果你每天要跑十几遍 CI,这就是每天省下半杯咖啡的时间——而且是白捡的。
这次动的是整条链路,不是某个环节
Astro 7 的性能提升来自四个一起换掉的部分:
- .astro 编译器用 Rust 重写。之前的实现是 Go,现在换成 Rust,解析用 oxc,CSS 作用域处理用 Lightning CSS。
- Markdown / MDX 换成新的 Rust 处理器 Sätteri。由核心成员 Erika 基于 pulldown-cmark 和 Oxc 构建,GFM、智能标点、标题 ID、数学公式、Wiki 链接全部内置,不再靠插件一层层挂上去。依赖数从 v6 的 247 个降到 v7 的 190 个。
- 渲染换成基于队列的引擎,不再是一口气把所有页面塞进内存。
- 底层换成 Vite 8 + Rolldown 打包器。Rolldown 是 Rust 写的,目标是同时替掉 esbuild 和 Rollup。
也就是说,你写 .astro 文件的体验没变,但从源码到产物的整条流水线,几乎每一段都被换成了更快的实现。
有一件事要提前知道:编译器变严格了
这是升级时最容易踩的坑——Astro 7 的编译器不再「帮你擦屁股」:
- 未闭合的标签现在直接报错,而不是被静默修复
- 非法的嵌套结构会原样保留,不再被悄悄纠正
- 元素之间的空白处理,改成跟随 JSX 规则
如果你手上有一堆陈年的 .astro 文件,升级后可能第一次构建就红一片。这不是 bug,是设计——团队选择了「早报错」而不是「默默帮你改」。Hacker News 上就有人吐槽这对遗留项目「实在不怎么样」,但另一边也有人欢迎依赖数从 247 降到 190。
Markdown 换掉 unified 也引起了争议,有开发者说「仅仅为了构建速度就放弃 unified 让人相当不满」。核心成员 Erika 的回应是:新流水线是刻意做成可插拔的,unified 并没有消失,依赖 remark/rehype 的项目可以继续留在旧流水线上。
顺带加的东西
除了快,Astro 7 还补了几块:
- 高级路由:新增
src/fetch.ts入口,和 Hono 兼容,可以在请求进入页面管线之前拦截处理 - 路由缓存正式稳定,并为 Netlify、Vercel、Cloudflare 提供了实验性 CDN 缓存提供商
- 面向 AI 编码 agent 的改进:
astro dev --background可以在后台跑 dev server,日志输出结构化 JSON,方便机器读取
你现在该做什么
如果你在维护 Astro 项目,可以按这个顺序动:
- 先看页面数——页面越多,这次升级的收益越明显;几十页的小站感受可能不大
- 用
npx @astrojs/upgrade升级,但先在分支上完整跑一次 build,重点看未闭合标签的报错 - 如果你用了
@astrojs/db,它已经被移除了,需要换到 Drizzle 或node:sqlite - 依赖 remark/rehype 的项目先别急着切 Markdown 流水线,旧管线还在
- 用了高级路由需求的话,试试
src/fetch.ts,能省掉不少中间件胶水代码
一句话总结:Astro 7 是一次纯性能导向的大版本,收益随项目规模放大,代价是编译器变严格、部分旧写法要改。大站值得升,小站可以先等等。
参考来源:
- InfoQ《Astro 7: Rust Compiler, Rust Markdown Pipeline and Vite 8 for Builds Up to 61% Faster》https://www.infoq.com/news/2026/08/astro-7-release-speed
- 腾讯新闻《Rust 再下一城:Astro 7 重写编译器与 Markdown 流水线》https://news.qq.com/rain/a/20260822A057PD00
评论区
0 条评论
登录后可评论。