Astro Ink部署指南:Vercel上SSR还是纯静态?4步转换法彻底讲明白
【免费下载链接】astro-inkCrisp, minimal, personal blog theme for Astro项目地址: https://gitcode.com/gh_mirrors/as/astro-ink
Astro Ink 是一款专为个人博客打造的极简 Astro 主题模板。很多新手在部署时都会困惑:到底该选 Vercel 上的 SSR(服务端渲染),还是更简单的纯静态托管?本文用 4 步转换法把这个问题彻底讲明白,帮你根据自己的需求快速完成 Astro Ink 部署。
先搞清楚:Astro Ink 为什么默认是 SSR?
打开项目根目录的 astro.config.mjs 文件,你会看到两个关键配置:
- 第 20 行:
output: 'server'—— 声明本项目以服务端渲染模式构建 - 第 55 行:
adapter: vercel()—— 接入 Vercel 官方适配器,天然支持一键部署到 Vercel
之所以默认 SSR,是因为主题内置了两个依赖服务端的能力:
- 文章浏览量统计:
src/pages/api/blog/views/[slug].json.ts中有一个 API 路由,配合 Redis(ioredis)或 Turso 数据库,为每篇文章提供动态的浏览计数功能 - Decap CMS 管理后台:通过
/admin路径即可在网页上写文章、改文章,省去本地编辑 Markdown 的麻烦
💡 简单记忆:你需要在线看文章数据、在线写文章 → 选 SSR;只想把博客"发出去" → 选纯静态。
SSR vs 纯静态:一张表帮你做决定
| 对比项 | SSR(默认) | 纯静态 |
|---|---|---|
| 部署平台 | Vercel / Netlify Functions | 任意静态托管(GitHub Pages、Cloudflare Pages 等) |
| 浏览量统计 | ✅ 支持(需配 Redis/Turso) | ❌ 需移除 |
| CMS 在线写文章 | ✅ 支持 | 部分受限 |
| 访问速度 | 极快 | 极快(CDN 直出,最快) |
| 成本 | 有 Serverless 用量 | 基本免费 |
| 配置难度 | 需配置环境变量 | 最简单,开箱即用 |
新手建议:如果你只是想快速拥有一个漂亮的个人博客,纯静态是更省心的选择,3 分钟搞定;如果你想要浏览量统计或在线编辑文章,保留默认的 SSR 即可。
4 步转换法:从 SSR 切换到纯静态构建
整个过程只涉及两个文件的改动,跟着做就行:
第 1 步:修改 output 为 static
打开 astro.config.mjs,将第 20 行的output: 'server'改为output: 'static'。
第 2 步:移除 Vercel 适配器
删除同文件第 55 行的adapter: vercel()(连同第 8 行的 vercel 导入语句一起删除)。没有适配器,构建产物就是纯 HTML 文件,可以扔到任何静态托管平台。
第 3 步:删除浏览量统计 API
删除src/pages/api/blog/views/[slug].json.ts文件。静态模式下不存在 API 路由,保留它会导致构建报错。相关的数据库实现位于src/utils/views/目录(包含 in-memory、ioredis、turso 三种方案),静态模式下同样用不到。
第 4 步:关闭浏览量统计开关
打开 src/config.ts,将第 58 行的USE_VIEW_STATS = true改为false,页面上就不会再发起浏览量请求。
完成以上 4 步后,运行npm run build,构建产物输出到dist/目录,直接把dist/交给任意静态托管平台即可。
Vercel 部署要点(保留 SSR 时)
如果你决定保留默认的 SSR 模式,部署前还需要注意环境变量配置。参考根目录的 .env.example,需要准备的变量有:
SITE_URI:你的站点地址OAUTH_GITHUB_CLIENT_ID/OAUTH_GITHUB_CLIENT_SECRET:CMS 后台的 OAuth 凭据REDIS_URI或TURSO_DB_URL+TURSO_DB_AUTH_TOKEN:浏览量统计的数据库连接
在 Vercel 控制台的项目设置中配置好这些环境变量后,连接你的代码仓库,Vercel 会自动识别 Astro 项目并完成部署。本地开发时,先把.env.example复制为.env并填入SITE_URI=http://localhost:4321即可。
常见问题
Q:纯静态模式下还能用深色模式、客户端搜索吗?
可以。这些功能全部由前端实现(Svelte 组件 + Lunr.js 搜索索引,构建时由scripts/search/prepare-index.js生成),与 SSR 无关。
Q:以后想从静态切回 SSR 怎么办?
把上面 4 步逆向操作即可:恢复output: 'server'、加回adapter: vercel()、恢复 API 文件和USE_VIEW_STATS = true。
总结
Astro Ink 部署的核心决策只有一个:要不要浏览量统计和在线 CMS。要,就用默认的 SSR + Vercel 适配器,配置环境变量即可;不要,就按本文的 4 步转换法改为纯静态,享受最快的访问速度和最简单的部署流程。两种方式都很快,选对适合自己的那一个,你的个人博客就能在几分钟内上线 🚀
【免费下载链接】astro-inkCrisp, minimal, personal blog theme for Astro项目地址: https://gitcode.com/gh_mirrors/as/astro-ink
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考