主 题
博客系统自文档 · 第 14/16 篇
目录 · 上一篇:部署与增量发布 · 下一篇:工具箱与其它页面
写在前面
首屏慢往往是 静态资源走错了路。2026-06 优化把 _nuxt、uploads、fonts 从 Node 挪到 Nginx,并瘦身 SSR HTML。本篇是可复现的验收清单。
功能与体验(优化前 vs 后)
| 指标 | 优化方向 |
|---|---|
| 首屏 JS 体积 | _nuxt immutable 长缓存 |
| 字体下载 | 全量 ~4MB → 子集 ~156KB |
| 重复 API | 登录态 /user/info、/rpg/status 各 ≤1 次 |
| HTML 体积 | 评论等改客户端加载 |
设计与实现:四批次
批次 1 — Nginx 静态直出
jiang-xia.top.conf 在 location / 之前:
/_nuxt/→ alias +static-cache-immutable.conf(1y)- uploads → alias
blog-server/public/+ 30d - HTML 仍
@nuxt→ :5050,no-cache
验证:curl -I https://jiang-xia.top/_nuxt/<chunk>.js 见 immutable。
批次 2 — 字体子集
- 脚本:
blog-home-nuxt/scripts/font/build-subset.mjs - 命令:
npm run font:subset - 发版 bump
app.less/nuxt.config的?v=
批次 3 — API 去重
Home composable 层合并重复请求(如 use-rpg、全局 user info),避免 SSR + 客户端各打一遍。
批次 4 — SSR 瘦身
- 文章列表保留 SSR(SEO)
- 评论侧栏、部分筛选下拉改 客户端 加载
缓存策略表
| 路径 | Cache-Control | 备注 |
|---|---|---|
/_nuxt/* |
immutable 1y | hash 文件名 |
/fonts/* |
~1d must-revalidate | 固定文件名 |
/js/* |
7d | public 脚本 |
| HTML | no-cache | SSR |
踩坑与取舍
location顺序错误会导致静态仍 hit Node。- 子集缺字:扩大字符集后必须 bump
?v=破缓存。 - 优化与 WS 共存:API 去重不能阻断
/realtime连接。
系列导航
- 导读 · 第 0 篇
- 下一篇:15 工具箱与其它页面
延伸阅读
blog-home-nuxt/docs/PERFORMANCE-OPTIMIZATION.md- 第 01 篇:请求链路

全部评论(0)