[笔记] · · 1 分钟
我们为什么把 starmerx.io 做成静态站点
一个工程师团队的对外站点,应该和我们的代码一样:简单、可读、易部署。零服务端,零 cookie,部署到 CDN 边缘。
astrocloudflarearchitecture
一个工程师团队的对外站点,应该和我们的代码一样:简单、可读、易部署。
TL;DR
starmerx.io 是一个纯静态站点。Astro 构建,托管在 Cloudflare Pages,零服务端,零 cookie。
为什么?因为:
- 我们不是在做产品,是在做一面橱窗。
- 静态 = 最便宜、最快、最容易维护。
- 我们每天写几千行业务代码,业余时间不该被站点的运维吃掉。
我们没做的事
- ❌ 没接数据库
- ❌ 没写 API
- ❌ 没装 cookie 同意横幅
- ❌ 没接评论系统
- ❌ 没接 Google Analytics(Cloudflare Web Analytics 无 cookie,合规更友好)
我们做的事
pnpm install
pnpm dev # 本地预览
pnpm build # 输出 dist/
# → Cloudflare Pages 自动从 git 构建
整条发布链路只有两步:写 MDX,git push。CI 自动跑 astro build,部署到边缘节点。
Astro 选了它而不是 Next
- 默认零 JS(绝大多页面不需要交互)
- MDX 是 first-class
- Content Collections + Zod schema 让 frontmatter 校验自动跑
- 构建快(数百页几百毫秒)
我们用 Next 写过内部管理后台,那里 RSC / Server Actions 都很合适。但对外的、内容为主的站点,Astro 几乎是无脑正确选择。
一个反直觉的点
“静态站点写交互怎么办?”
加 JS。Astro 的 client:* 指令让你在需要的角落挂 React/Vue/Svelte/preact/原生。
我们只在两处挂 JS:
- 主题切换(~30 行)
- Hero shader(~60 行 + GLSL)
其余全是 HTML + CSS。
我们公开的栈
| 层 | 选型 | 原因 |
|---|---|---|
| 框架 | Astro 4 | 静态 + MDX + 零 JS 默认 |
| 样式 | Tailwind | 快、约束、容易撕掉重写 |
| 部署 | Cloudflare Pages | 全球边缘、慷慨免费层 |
| 搜索 | Pagefind | 构建时生成索引,纯静态 |
| Hero | ogl + GLSL | 20KB WebGL,不影响 LCP |
写在最后:
我们乐于公开我们用的栈和踩过的坑。 后面这个
notes/栏目会持续更新。