TL;DR
SSG 适合内容固定、无登录态博客;SSR 支持动态路由、实时数据。云图札记从 SSG 切到 SSR,核心原因是需要动态路由和实时数据。
两种渲染模式是什么
SSG(Static Site Generation)
构建时把每篇文章都生成静态 HTML 文件。访问时直接返回文件,不需要服务器计算。
优点:访问速度极快、可部署在任何静态托管、CDN 缓存友好。 缺点:每次内容更新都要重新构建、无法根据请求动态返回不同内容。
SSR(Server-Side Rendering)
每次请求时,服务器实时运行 Astro 代码生成 HTML 返回。
优点:支持动态路由、可读取请求头、实时数据。 缺点:需要运行环境、响应速度比静态文件慢、调试更复杂。
我为什么切到 SSR
最初用 SSG 模式,后来需要动态路由(/rss.xml 实时读取文章列表)和服务端重定向。SSG 无法做到。
切换只需改两行:
import cloudflare from '@astrojs/cloudflare';
export default defineConfig({
output: 'server',
adapter: cloudflare(),
});
性能对比
| 指标 | SSG | SSR(Edge) |
|---|---|---|
| TTFB | <50ms | 80-200ms |
| 构建时间 | 30s-5min | 5-30s |
| 动态内容 | 不支持 | 支持 |
TTFB 增加 100ms 左右,对博客可接受。好处是功能灵活度大幅提升。
混合模式
Astro 支持按页面选择渲染模式:
---
export const prerender = true; // 这个页面走 SSG
---
<h1>静态页面</h1>
不写 prerender 就走 SSR。一套代码,两种模式。
写在
没有”最好”的渲染模式,只有”最适合当前需求”的模式。先想清楚需求,再选模式。
延伸阅读
COMMENTS
种下你的想法
在花园里留下一条评论,和这篇文章一起生长。