个人站为什么选 FastAPI 而不是 Spring Boot
不是 Spring Boot 不好,是这台服务器养不起 JVM——一台已经跑着仨服务的云主机,内存账要精打细算。
先说结论
这个站(就是你现在看的)用 FastAPI + Jinja2 + SQLite。不是 Spring Boot 不好——是我那台腾讯云养不起 JVM。
内存账
服务器上已经跑着 Caddy、AI 生图服务、知识库网关。再驻一个 JVM 进去,300MB+ 起步;FastAPI 全家桶?50MB 打住。个人站的流量,SQLite 单文件都嫌快。
| 项 | Spring Boot | FastAPI |
|---|---|---|
| 常驻内存 | 300MB+ | ~50MB |
| 冷启动 | 秒级 | 毫秒级 |
| 单文件部署 | jar + JDK | venv + py |
Jinja2 直出的另一个理由
个人内容站,SEO 和打开速度是命。Jinja2 模板直出 HTML,搜索引擎来了就能读,不用搞 SSR、不用搞预渲染。
什么时候该换回 Spring Boot
真要做多租户、高并发、复杂事务的业务系统,Java 生态没得说。选型没有信仰,只有场景。 我的场景是:一台服务器、一个管理员、读多写少——答案很明显。
# 全站首页的核心就这么朴实
@app.get("/")
def home(request: Request, db: Session = Depends(get_db)):
...
return templates.TemplateResponse("home.html", ctx)