博客系统自文档 · 第 14/16 篇
目录 · 上一篇:部署与增量发布 · 下一篇:工具箱与其它页面
写在前面
首屏慢往往是 静态资源走错了路。2026-06 优化把 _nuxt、uploads、fonts 从 Node 挪到 Nginx,并瘦身 SSR HTML。本篇是可复现的验收清单(主要针对 blog-home-nuxt Web 端)。
功能与体验(优化前 vs 后)
| 指标 | 优化方向 |
|---|---|
| 首屏 JS 体积 | _nuxt immutable 长缓存 |
| 字体下载 | 全量 ~4MB → 子集 ~156KB |
| 重复 API | 登录态 /user/info、/rpg/status 各 ≤1 次 |
| HTML 体积 | 评论等改客户端加载 |
| Sitemap | @nuxtjs/sitemap 运行时源,含排行榜用户主页 |
设计与实现:四批次
批次 1 — Nginx 静态直出
jiang-xia.top.conf 在 location / 之前:
/_nuxt/→ alias +static-cache-immutable.conf(1y)/x-blog/api/v1/static/、/x-api/blog-server/static/→ aliasblog-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 内 runDeduped 合并并发 RPG 请求;/user/info 由 RpgGlobalInit 单点拉取,避免 SSR + 客户端各打一遍。详见 页面开发规范 §2.4。
批次 4 — SSR 瘦身
- 文章列表保留 SSR(SEO)
- 评论侧栏、部分筛选下拉改 客户端 加载
Sitemap(2026-06 重构)
旧 modules/sitemap.ts 已替换为:
- Nuxt 模块
@nuxtjs/sitemap - 动态源
server/api/__sitemap__/urls.ts— build/生成时拉 500 篇文章 + 排行榜 Top50 用户/user/{uid}
注意:新文上线后须 Home rebuild 才进 sitemap;RSS 无需 rebuild。
缓存策略表
| 路径 | Cache-Control | 备注 |
|---|---|---|
/_nuxt/* |
immutable 1y | hash 文件名 |
/fonts/* |
~1d must-revalidate | 固定文件名 |
/js/* |
7d | public 脚本 |
| HTML | no-cache | SSR |
uni-app 移动端(补充)
Web 优化项不直接适用;uni-app 采用 分包(pages-blog/、pages-rpg/、pages-tool/)降低主包体积,微信小程序须遵守 WXSS 语法约束(见 uniapp 工程规范)。性能验收以真机/开发者工具为准。
踩坑与取舍
location顺序错误会导致静态仍 hit Node。- 子集缺字:扩大字符集后必须 bump
?v=破缓存。 - 优化与 WS 共存:API 去重不能阻断
/realtime连接。 - SEO 以 Web 为准:uni-app 无 SSR sitemap,公开收录依赖 Nuxt。
系列导航
- 目录:博客系统分类
- 上一篇:13 部署与增量发布
- 下一篇:15 工具箱与其它页面
- 导读:导读 · 第 0 篇
延伸阅读
blog-home-nuxt/docs/PERFORMANCE-OPTIMIZATION.mdblog-home-nuxt/server/api/__sitemap__/urls.ts- 第 01 篇:请求链路

全部评论(3)